Fórum Novamente E-mail com Delphi 7 #428051
05/11/2012
0
É o seguinte, como todo mundo sabe há necessidade de um dia ter que desenvolver na aplicação o envio de e-mail com anexos.
Até ai tudo bem, mas pesquisando no fórum da devmedia, as informações são muito desencontradas, infelizmente gerando mais dúvidas do que soluções.
Então venho através do fórum, solicitar a alguma alma bendita, o código fonte de envio de e-mail com anexos com o Delphi 7 fundional. Sei que é dificil pedir assim logo de cara, ainda mais o código, mas aqui vivemos num mundo livre, onde o conhecimento pertence ao mundo, e o propósito do fórum é ajudar as almas perdidas (como eu) a tentarem resolver seus pequenos problemas no dia a dia da programação.
Agradeço a todos e espero que a ajuda que eu obtiver com este tópico, também possa ajudar outras almas perdidas a encontrarem a luz no fim do tunel.
Um forte abraço a todos.
Valnei
Valnei Reis
Curtir tópico
+ 0Post mais votado
29/11/2012
IdMessage1.Clear;
IdMessage1.From.Text := Email1;
IdMessage1.Recipients.EMailAddresses := Email2[I]; // buscado no banco de dados
IdMessage1.Subject := 'Laudo de ' + Animal[I];
IdMessage1.Body.Text := 'Resultado de Laudo';
TIdAttachment.Create(IdMessage1.MessageParts, TFileName('PDF\'+IntToStr(NumLaudo)+'.pdf'));
IdMessage1.Date := StrToDateTime(FormatDateTime('DD/MM/YYYY HH:MM:SS',Now));
IdSMTP1.AuthenticationType := atLogin;
//Se for gmail
IdSMTP1.Host := 'smtp.gmail.com';
IdSMTP1.Port := 465;
IdSMTP1.Password := senha;
IdSMTP1.Username := email_completo;
//
//Se for pro hotmail
IdSMTP1.Host := 'smtp.live.com';
IdSMTP1.Port := 587;
IdSMTP1.Password := senha;
IdSMTP1.Username := email_completo;
SSLSocket.SSLOptions.Method := sslvTLSv1;
SSLSocket.PassThrough := true;
//
IdSMTP1.Connect;
//Se for hotmail
IdSMTP1.SendCmd('STARTTLS', 220);
SSLSocket.PassThrough := false;
//
SMTP.Authenticate;
IdSMTP1.Send(IdMessage1);
Claudia Nogueira
Gostei + 1
Mais Posts
05/11/2012
Claudia Nogueira
Inclusive eu desenvolvi um exemplo em Delphi7 e disponibilizei o código fonte: [url]http://www.cdnweb.com.br/EnviarEmail.rar[/url]
Gostei + 0
06/11/2012
Luiz Eduardo
procedure tal tal tal (Sender: TObject); begin with IdMessage1 do begin IdMessage1.MessageParts.Clear; TIdAttachment.Create(IdMessage1.MessageParts, 'C:\\Windows\\System32\\arquivo + ponto + extensão'); From.Text := 'testekeypress@gmail.com'; //E-mail que envia os logs Recipients.EMailAddresses := "'; //E-mail que vai receber os dados Subject := (NomedoComputador); // Assunto IdSMTP1.AuthenticationType := atlogin; //Requer login //NAO MEXER IdSMTP1.Port := 587; IdSMTP1.Username := ''; //Nome de usuario (email) IdSMTP1.Password := ''; //Senha do email que envia IdSMTP1.Host := 'smtp.gmail.com'; //Servidor SMTP IdSMTP1.Connect; //Conecta ao servidor try IdSMTP1.Send(IdMessage1); //Envia except Application.Terminate; IdSMTP1.Disconnect; //Disconecta end; end; end;
Espero que lhe ajude aí parcero!
Gostei + 0
07/11/2012
Powerlog Tecnologia
Salvei a imagem aqui: https://dl.dropbox.com/u/35181834/Delphi/TelaEnvioEmail.jpg
Fonte (apenas .pas) aqui: https://dl.dropbox.com/u/35181834/Delphi/PasEnvioEmail.txt
Espero ter ajudado ;)
Gostei + 0
08/11/2012
Luiz Eduardo
Salvei a imagem aqui: https://dl.dropbox.com/u/35181834/Delphi/TelaEnvioEmail.jpg
Fonte (apenas .pas) aqui: https://dl.dropbox.com/u/35181834/Delphi/PasEnvioEmail.txt
Espero ter ajudado ;)
Mas Powerlog, este código que eu sugeri acima também adiciona vários anexos, basta apenas ir adicionando
TIdAttachment.Create(IdMessage1.MessageParts, 'C:\Windows\System32\arquivo + ponto + extensão');
uma abaixo do outro tá ligado? testa aê que você ver!! é um trecho de código bem simples, funcional e de fácil entendimento rsrs.
Abração cara!
Gostei + 0
08/11/2012
Luiz Eduardo
Salvei a imagem aqui: https://dl.dropbox.com/u/35181834/Delphi/TelaEnvioEmail.jpg
Fonte (apenas .pas) aqui: https://dl.dropbox.com/u/35181834/Delphi/PasEnvioEmail.txt
Espero ter ajudado ;)
Mas Powerlog, este código que eu sugeri acima também adiciona vários anexos, basta apenas ir adicionando
TIdAttachment.Create(IdMessage1.MessageParts, 'C:\Windows\System32\arquivo + ponto + extensão');
uma abaixo do outro tá ligado? testa aê que você ver!! é um trecho de código bem simples, funcional e de fácil entendimento rsrs.
Abração cara!
Gostei + 0
26/11/2012
Edilcimar
IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.Host := Smtp; // buscado no banco de dados
IdSMTP1.Username := Email1; // buscado no banco de dados
IdSMTP1.Password := Senha; // buscado no banco de dados
If not IdSMTP1.Connected then
IdSMTP1.Connect;
IdMessage1.Clear;
IdMessage1.From.Text := Email1;
IdMessage1.Recipients.EMailAddresses := Email2[I]; // buscado no banco de dados
IdMessage1.Subject := 'Laudo de ' + Animal[I];
IdMessage1.Body.Text := 'Resultado de Laudo';
TIdAttachment.Create(IdMessage1.MessageParts, TFileName('PDF\'+IntToStr(NumLaudo)+'.pdf'));
IdMessage1.Date := StrToDateTime(FormatDateTime('DD/MM/YYYY HH:MM:SS',Now));
IdSMTP1.Send(IdMessage1); - - - - aqui dá erro -> Project raised exception class EIdProtocolReplay error with
message '5.7.0 Must issue a STARTTLS command first. q22sm13975486anh.18'. Process stoped, etc, isto usando a porta 587, se utilizar a porta 25 dá erro de socket
Gostei + 0
29/11/2012
Edilcimar
Gostei + 0
29/11/2012
Edilcimar
Gostei + 0
29/11/2012
Claudia Nogueira
Tem que usar o componente TIdSSLIOHandlerSocket.
Eu digitei o nome do componente errado, o certo é o TIdSSLIOHandlerSocket.
Digitei a resposta de cabeça e tinha uns erros de digitação, vou postar novamente.
Em IOHandler do IdSMTP1 você liga o componente TIdSSLIOHandlerSocket.
O código pro gmail fica assim:
IdMessage1.Clear;
IdMessage1.From.Text := Email1;
IdMessage1.Recipients.EMailAddresses := Email2[I]; // buscado no banco de dados
IdMessage1.Subject := 'Laudo de ' + Animal[I];
IdMessage1.Body.Text := 'Resultado de Laudo';
TIdAttachment.Create(IdMessage1.MessageParts, TFileName('PDF\'+IntToStr(NumLaudo)+'.pdf'));
IdMessage1.Date := StrToDateTime(FormatDateTime('DD/MM/YYYY HH:MM:SS',Now));
IdSMTP1.AuthenticationType := atLogin;
//Se for gmail
IdSMTP1.Host := 'smtp.gmail.com';
IdSMTP1.Port := 465;
IdSMTP1.Password := '*%wr2LcTtGMe';
IdSMTP1.Username := 'claudiadnh@gmail.com';
//
IdSMTP1.Connect;
IdSMTP1.Authenticate;
IdSMTP1.Send(IdMessage1);
Se der algum erro, pode ser a versão das dlls libeay32.dll e ssleay32.ddl.
Aí me avisa que eu te mando.
Gostei + 1
29/11/2012
Edilcimar
Gostei + 0
29/11/2012
Claudia Nogueira
É o último da paleta, com um símbolo de um cadeado.
Meu software é feito com Delphi 7 também.
Acabei de testar.
Gostei + 1
29/11/2012
Edilcimar
Project LabClin.exe raised exception class EIdOSSLCouldNotLoadSSLLibrary with message 'Could not load SSL library.'. Process stopped. Use Step or Run to continue.
Gostei + 1
29/11/2012
Claudia Nogueira
Passa seu e-mail pra eu te mandar.
Project LabClin.exe raised exception class EIdOSSLCouldNotLoadSSLLibrary with message 'Could not load SSL library.'. Process stopped. Use Step or Run to continue.
Gostei + 0
29/11/2012
Edilcimar
Gostei + 0
29/11/2012
Claudia Nogueira
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)