quarta-feira, 15 de fevereiro de 2012

Procedure para enviar email com programa padrão do SO.

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

6 comentários:

Steve Narancic disse...

Não funciona com outlook 2010

gustavohinterholz disse...

Ja debugou para verificar onde esta o erro ? Para mim funcionou no 2010.

Wejov disse...

Ola amigo , estou começando a estudar o delphi e vi que vc mexe com isso e gostaria que você me informasse onde consigo a melhor versão pra começar e que me desse algumas dicas , agradeço mesmo sua resposta , meu e-mail é jovaneguedes@hotmail.com ok abraços

Unknown disse...

Boa tarde. Não funciona com thundrbird sem o office instalado, teria alguma idéia do que poderia fazer?

gustavohinterholz disse...

Boa Tarde,
Estranho mesmo não funcionar , da algum erro ?
Testou para ver pelo debug o que ocorre ?

Unknown disse...

Show! pra mim funcionou perfeitamente MSOutlook2007 - Delphi 6 e o componente peguei aqui --> http://sourceforge.net/projects/jvcl/

obg!

Postar um comentário