Foi removido o microsoft office de uma maquina de um usuario..e instalado o BrOffice, porem agora tenho um programa e nele tem um botão que monta o email em cima do outllok express..mas este..não foi removido somente o Office(word, excel etc...).
Então agora ao clickar no botão da a seguinte mensagem de erro:
Error While Trying to send email
Eu uso esta função pra mandar o email:
Uses
Mapi
function SendEMail(Handle: THandle; Mail: TStrings):
Cardinal;
type
TAttachAccessArray = array [0..0] of TMapiFileDesc;
PAttachAccessArray = ^TAttachAccessArray;
var
MapiMessage: TMapiMessage;
Receip: TMapiRecipDesc;
Attachments: PAttachAccessArray;
AttachCount: Integer;
i1: integer;
FileName: string;
dwRet: Cardinal;
MAPI_Session: Cardinal;
WndList: Pointer;
begin
dwRet := MapiLogon(Handle,
PChar(''),
PChar(''),
MAPI_LOGON_UI or MAPI_NEW_SESSION,
0, @MAPI_Session);
if (dwRet <> SUCCESS_SUCCESS) then
begin
MessageBox(Handle,
PChar('Error while trying to send email'),
PChar('Error'),
MB_ICONERROR or MB_OK);
end
else
begin
FillChar(MapiMessage, SizeOf(MapiMessage), #0);
Attachments := nil;
FillChar(Receip, SizeOf(Receip), #0);
if Mail.Values['to'] <> '' then
begin
Receip.ulReserved := 0;
Receip.ulRecipClass := MAPI_TO;
Receip.lpszName :=
StrNew(PChar(Mail.Values['to']));
Receip.lpszAddress := StrNew(PChar('SMTP:' +
Mail.Values['to']));
Receip.ulEIDSize := 0;
MapiMessage.nRecipCount := 1;
MapiMessage.lpRecips := @Receip;
end;
AttachCount := 0;
for i1 := 0 to MaxInt do
begin
if Mail.Values['attachment' + IntToStr(i1)] = ''
then
break;
Inc(AttachCount);
end;
if AttachCount > 0 then
begin
GetMem(Attachments, SizeOf(TMapiFileDesc) *
AttachCount);
for i1 := 0 to AttachCount - 1 do
begin
FileName := Mail.Values['attachment' +
IntToStr(i1)];
Attachments[i1].ulReserved := 0;
Attachments[i1].flFlags := 0;
Attachments[i1].nPosition := ULONG($FFFFFFFF);
Attachments[i1].lpszPathName :=
StrNew(PChar(FileName));
Attachments[i1].lpszFileName :=
StrNew(PChar(ExtractFileName(FileName)));
Attachments[i1].lpFileType := nil;
end;
MapiMessage.nFileCount := AttachCount;
MapiMessage.lpFiles := @Attachments^;
end;
if Mail.Values['subject'] <> '' then
MapiMessage.lpszSubject :=
StrNew(PChar(Mail.Values['subject']));
if Mail.Values['body'] <> '' then
MapiMessage.lpszNoteText :=
StrNew(PChar(Mail.Values['body']));
WndList := DisableTaskWindows(0);
try
Result := MapiSendMail(MAPI_Session, Handle,
MapiMessage, MAPI_DIALOG, 0);
finally
EnableTaskWindows( WndList );
end;
for i1 := 0 to AttachCount - 1 do
begin
StrDispose(Attachments[i1].lpszPathName);
StrDispose(Attachments[i1].lpszFileName);
end;
if Assigned(MapiMessage.lpszSubject) then
StrDispose(MapiMessage.lpszSubject);
if Assigned(MapiMessage.lpszNoteText) then
StrDispose(MapiMessage.lpszNoteText);
if Assigned(Receip.lpszAddress) then
StrDispose(Receip.lpszAddress);
if Assigned(Receip.lpszName) then
StrDispose(Receip.lpszName);
MapiLogOff(MAPI_Session, Handle, 0, 0);
end;
end;
exemplo de envio no botão:
procedure TForm1.BitBtn5Click(Sender: TObject);
var
mail: TStringList;
begin
mail := TStringList.Create;
try
mail.values['to'] := 'Email@test.xyz'; ///AQUI VAI O EMAIL DO DESTINATARIO///
mail.values['subject'] := 'Hello'; ///AQUI O ASSUNTO///
mail.values['body'] := 'blah'; ///AQUI O TEXTO NO CORPO DO EMAIL///
mail.values['attachment0'] := 'C:\Test.txt'; ////AQUI O ENDEREÇO ONDE ENCONTRAM OS ARQUIVOS//
mail.values['attachment1']:='C:\Test2.txt'; ///IDEM - NO ATTACHMENT1 TEM QUE COLOCAR A SEQUNCIA DO EMAIL A QUAL DESEJA ENVIAR EXEMPLO: ATTACHMENT1
sendEMail(Application.Handle, mail);
finally
mail.Free;
end;
end;
alguém teria alguma ideia pra resolver este problema??
Obs> Na verdade eu queria abandonar este tipo de envio de email(senão fico dependente), gostaria de fazer tudo pelo delphi...mas peguei uns exemplo na net e nenhum funcionou.....a maioria dava problemas de incompatibilidade com servidores SMTP
Mas se alguém tiver algo eficiente por favor me apresente...
Pergunta
Eder
Ola..pessoal.
Foi removido o microsoft office de uma maquina de um usuario..e instalado o BrOffice, porem agora tenho um programa e nele tem um botão que monta o email em cima do outllok express..mas este..não foi removido somente o Office(word, excel etc...).
Então agora ao clickar no botão da a seguinte mensagem de erro:
Error While Trying to send email
Eu uso esta função pra mandar o email:
exemplo de envio no botão:alguém teria alguma ideia pra resolver este problema??
Obs> Na verdade eu queria abandonar este tipo de envio de email(senão fico dependente), gostaria de fazer tudo pelo delphi...mas peguei uns exemplo na net e nenhum funcionou.....a maioria dava problemas de incompatibilidade com servidores SMTP
Mas se alguém tiver algo eficiente por favor me apresente...
Agradecido..
Link para o comentário
Compartilhar em outros sites
16 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.