Estou usando este código para enviar emails pelo Thunderbird:
//-------------- Função para invocar o Thunderbird -----------------------------//
Declarar Uses: MAPI
function TForm2.SendMailMAPI(const Subject, Body, FileName, SenderName,
SenderEMail, RecepientName, RecepientEMail: String): Integer;
var
Message: TMapiMessage;
lpSender, lpRecepient: TMapiRecipDesc;
FileAttach: TMapiFileDesc;
SM: TFNMapiSendMail;
MAPIModule: HModule;
begin
FillChar(message, SizeOf(message), 0);
with message do
begin
if (Subject <> '') then
begin
lpszSubject := PAnsiChar(AnsiString(Subject)); // PAnsiChar(Subject);
end;
if (Body <> '') then
begin
lpszNoteText := PAnsiChar(AnsiString(Body));
end;
if (SenderEMail <> '') then
begin
lpSender.ulRecipClass := MAPI_ORIG;
if (SenderName = '') then
begin
lpSender.lpszName := PAnsiChar(AnsiString(SenderEMail))
end
else
begin
lpSender.lpszName := PAnsiChar(AnsiString(SenderName))
end;
lpSender.lpszAddress := PAnsiChar(AnsiString('SMTP:' + SenderEMail));
lpSender.ulReserved := 0;
lpSender.ulEIDSize := 0;
lpSender.lpEntryID := nil;
lpOriginator := @lpSender;
end;
if (RecepientEMail <> '') then
begin
lpRecepient.ulRecipClass := MAPI_TO;
if (RecepientName = '') then
begin
lpRecepient.lpszName := PAnsiChar(AnsiString(RecepientEMail))
end
else
begin
lpRecepient.lpszName := PAnsiChar(AnsiString(RecepientName))
end;
lpRecepient.lpszAddress :=
PAnsiChar(AnsiString('SMTP:' + RecepientEMail));
lpRecepient.ulReserved := 0;
lpRecepient.ulEIDSize := 0;
lpRecepient.lpEntryID := nil;
nRecipCount := 1;
lpRecips := @lpRecepient;
end
else
begin
lpRecips := nil
end;
if (FileName = '') then
begin
nFileCount := 0;
lpFiles := nil;
end
else
begin
FillChar(FileAttach, SizeOf(FileAttach), 0);
FileAttach.nPosition := Cardinal($FFFFFFFF);
FileAttach.lpszPathName := PAnsiChar(AnsiString(FileName));
nFileCount := 1;
lpFiles := @FileAttach;
end;
end;
MAPIModule := LoadLibrary(PChar(MAPIDLL));
if MAPIModule = 0 then
begin
Result := -1
end
else
begin
try
@SM := GetProcAddress(MAPIModule, 'MAPISendMail');
if @SM <> nil then
begin
Result := SM(0, Application.Handle, message, MAPI_DIALOG or
MAPI_LOGON_UI, 0);
end
else
begin
Result := 1
end;
finally
FreeLibrary(MAPIModule);
end;
end;
if Result <> 0 then
begin
MessageDlg('Error sending mail (' + IntToStr(Result) + ').', mtError,
[mbOK], 0)
end;
end;
Pergunta
geovanepc
Estou usando este código para enviar emails pelo Thunderbird:
//-------------- Função para invocar o Thunderbird -----------------------------//
Declarar Uses: MAPI
function TForm2.SendMailMAPI(const Subject, Body, FileName, SenderName,
SenderEMail, RecepientName, RecepientEMail: String): Integer;
var
Message: TMapiMessage;
lpSender, lpRecepient: TMapiRecipDesc;
FileAttach: TMapiFileDesc;
SM: TFNMapiSendMail;
MAPIModule: HModule;
begin
FillChar(message, SizeOf(message), 0);
with message do
begin
if (Subject <> '') then
begin
lpszSubject := PAnsiChar(AnsiString(Subject)); // PAnsiChar(Subject);
end;
if (Body <> '') then
begin
lpszNoteText := PAnsiChar(AnsiString(Body));
end;
if (SenderEMail <> '') then
begin
lpSender.ulRecipClass := MAPI_ORIG;
if (SenderName = '') then
begin
lpSender.lpszName := PAnsiChar(AnsiString(SenderEMail))
end
else
begin
lpSender.lpszName := PAnsiChar(AnsiString(SenderName))
end;
lpSender.lpszAddress := PAnsiChar(AnsiString('SMTP:' + SenderEMail));
lpSender.ulReserved := 0;
lpSender.ulEIDSize := 0;
lpSender.lpEntryID := nil;
lpOriginator := @lpSender;
end;
if (RecepientEMail <> '') then
begin
lpRecepient.ulRecipClass := MAPI_TO;
if (RecepientName = '') then
begin
lpRecepient.lpszName := PAnsiChar(AnsiString(RecepientEMail))
end
else
begin
lpRecepient.lpszName := PAnsiChar(AnsiString(RecepientName))
end;
lpRecepient.lpszAddress :=
PAnsiChar(AnsiString('SMTP:' + RecepientEMail));
lpRecepient.ulReserved := 0;
lpRecepient.ulEIDSize := 0;
lpRecepient.lpEntryID := nil;
nRecipCount := 1;
lpRecips := @lpRecepient;
end
else
begin
lpRecips := nil
end;
if (FileName = '') then
begin
nFileCount := 0;
lpFiles := nil;
end
else
begin
FillChar(FileAttach, SizeOf(FileAttach), 0);
FileAttach.nPosition := Cardinal($FFFFFFFF);
FileAttach.lpszPathName := PAnsiChar(AnsiString(FileName));
nFileCount := 1;
lpFiles := @FileAttach;
end;
end;
MAPIModule := LoadLibrary(PChar(MAPIDLL));
if MAPIModule = 0 then
begin
Result := -1
end
else
begin
try
@SM := GetProcAddress(MAPIModule, 'MAPISendMail');
if @SM <> nil then
begin
Result := SM(0, Application.Handle, message, MAPI_DIALOG or
MAPI_LOGON_UI, 0);
end
else
begin
Result := 1
end;
finally
FreeLibrary(MAPIModule);
end;
end;
if Result <> 0 then
begin
MessageDlg('Error sending mail (' + IntToStr(Result) + ').', mtError,
[mbOK], 0)
end;
end;
//---------------------------------------------------------------------------------//
Para enviar:
procedure TForm2.Button2Click(Sender: TObject);
begin
SendMailMAPI(Subject, Body, FileName, SenderName, SenderEMail, RecepientName, RecepientEMail);
end;
//---------------------------------------------------------------------------------//
Ele funciona perfeitamente, só tem um detalhe, como preciso enviar vários emails, um por vez, não quero ficar clicando no botão <ENVIAR EMAIL>.
Também não quero enviar com cópia.
Preciso que ele envie automaticamente.
Existe algum comando na API do Thunderbird que posso usar para fazer esse envio automaticamente, depois de invocar e preencher o formulário?
Desde já agradeço.
Um forte abraço à todos.
Editado por geovanepcLink para o comentário
Compartilhar em outros sites
8 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.