Bom dia pessoal,
Tive um problema com o envio do outlookexpress e com o novo tambem na questão de anexos e decidi correr atrás mais pro lado do thunderbird, foi meio chato , mas consegui fazer funcionar, e pelo o que sei , a procedure abaixo funcionara com qualquer cliente de email, desde que ele esteja como padrão do sistema operacional.
Vocês vão precisar :
-Componentes Jedi.
-Unit JclMapi.
Passos:
1 - Criar uma aplicacação nova.
2 - Inserir um button na mesma.
3 - Declarar na secao uses a unit JclMapi.
4 - Declarar a função
procedure EnviarEmailPadrao(sListaEmail:TStringList;sListaAnexos:TStringList;sAssunto:string;sTextoEmail:string);
Acima da seção private.
5 - Implementar ela :
procedure TForm1.EnviarEmailPadrao(sListaEmail:TStringList;sListaAnexos:TStringList;sAssunto:string;sTextoEmail:string);
var TmpEmail: TjclEmail;
var i:integer;
begin
TmpEmail := TjclEmail.Create;
//Adicionando Emailas
for I := 0 to sListaEmail.Count-1 do
TmpEmail.Recipients.Add(sListaEmail[i]);
//Adicionando Anexos
for I := 0 to sListaAnexos.Count-1 do
TmpEmail.Attachments.Add(sListaAnexos[i]);
TmpEmail.Subject := sAssunto;
TmpEmail.Body := sTextoEmail;
TmpEmail.Send(True);
end;
6 - O evento onClick do Button deverá ficar assim:
procedure TForm1.btn1Click(Sender: TObject);
var sListaEmail:TStringList;
var slistaAnexos:TStringList;
var sAssunto,sTextoEmail:string;
begin
//Cria as 2 String List pois a procedure EnviaEmail varre as stringlist em busca de email's e anexos.
sListaEmail := TStringList.Create();
slistaAnexos := TStringList.Create();
//Populando a lista de emails
sListaEmail.Clear();
sListaEmail.Add('gustavo@taltal.com.br');
sListaEmail.Add('outro@taltal.com.br');
//Populando a lista de anexos
slistaAnexos.Clear();
slistaAnexos.Add('C:\Temp\gustavo.txt');
slistaAnexos.Add('C:\Temp\gustavo.sql');
//Adicionando o Assunto a email
sAssunto := 'Teste de Email';
//Adicionando o Texto do email
sTextoEmail := 'Programa para envio de email padrao para sistemas que tenham algum programa de email padrao instalado.';
//Enviando o Email pela Procedure
EnviarEmailPadrao(sListaEmail,slistaAnexos,sAssunto,sTextoEmail);
Pronto Galera!
O que ele faz?
Voce vai adicionar tantos seus destinatarios de emails, quanto seus anexos de email , em 2 stringList, adicionar o assunto e o texto do email e enviá-los para a procedure, o trabalho sujo, ela faz... hahaha!
Obs :
-Testei somente com o thunderbird, mas deverá funcionar com qualquer cliente que esteja como PADRÃO no SO.
- Compilado pelo Delphi Xe2.
- Cliente de Email padrão : Thunderbird v. 10.0.1, released: February 12th, 2012.
DOWNLOAD EXEMPLO AQUI