Mandar email pelo Gmail com Indy

Delphi

07/02/2007

Ai pessoal, estou com uma duvida, acho que estou deixando algo sem configurar, to usando os Componentes Indy q qrendo enviar um email pelo o Gmail.

IdSMTP.host => smtp.gmail.com
IdSMTP.Port => 465
IdSMTP.password => ...
IdSMTP.username => ...

// NO botao 
  IdMessage.Recipients.EMailAddresses := edtPara.Text;
  IdMessage.Subject := edtAssunto.Text;
  IdMessage.Body := mmMensagem.Lines;
  IdSMTP.Connect;

if IdSMTP.Connected then begin
IdSMTP.Send(IdMessage);
showmessage(´Email Enviado com Sucesso !´);

IdSMTP.Disconnect;
end;



Laelsonc

Laelsonc

Curtidas 0

Respostas

Rjun

Rjun

07/02/2007

Qual o problema que você esta tendo? Qual versão do Indy você está usando?


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

07/02/2007

instancie um componente [b:7412b67ab0]IdSSLIOHandlerSocket[/b:7412b67ab0] da palleta [b:7412b67ab0]Indy IO Handlers[/b:7412b67ab0]

ligue a propriedade IOHandler do componente IdSMTP ao componente IdSSLIOHandlerSocket recém criado.

IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.Host := ´smtp.gmail.com´;
IdSMTP1.Port := 465;
IdSMTP1.Username := ´seulogin@gmail.com´;
IdSMTP1.Password := ´suasenha´;

IdSMTP.Connect(3000);

antes de executar seu programa, será necessário baixar uma biblioteca OpenSSL e extrair os arquivos na pasta do exe ou na pasta do windows (numa pasta que esteja no caminho de busca).
eu baixei a [url=http://indy.fulgan.com/SSL/indy_OpenSSL096m.zip]indy_OpenSSL096m[/url] em [url]http://indy.fulgan.com/SSL/[/url]


GOSTEI 0
Laelsonc

Laelsonc

07/02/2007

Depois de muito tentar com o Gmail, nao consegui ao menos conectar, pois dava um erro de de carregamento de Dll das que eu baixei no link do Emerson, eu fui pra um outro servidor de emails.

IdSMTP.Host := ´mail.itnet.com.br´;
IdSMTP.Port := 25;

IdSMTP.Username := ´laelsonc@itnet.com.br´;
IdSMTP.Password := ´...´;


Esse ao menos conecta. Mas na hora de enviar o IdMessage passa um tempao, e depois manda uma mensagem dizendo ´authentication failed´
...na to entendendo onde essa falha de autenticacao. A porta esta correta,
eu uso no outlook a mesma.

Eu estou usando o Indy 10, e nao consegui colocar esse paramentro ai
no Connect emerson, acho que a versao nao suporta mais.

IdSMTP1.AuthenticationType := atLogin;
Connect(3000);



Agradeço desde de ja as ajudas...


GOSTEI 0
Massuda

Massuda

07/02/2007

Informe qual versão do Indy você está usando ou se estiver usando o Indy que veio com o Delphi, informe qual versão do seu Delphi.


GOSTEI 0
Corcos

Corcos

07/02/2007

Uso a versão 9 e funciona certinho, tive uns problemas com o Gmail e preferi utilizar o yahoo que passei a não ter mais problemas

IdSMTP.Host:=´smtp.mail.yahoo.com.br´; IdSMTP.Port:= 25; //IdSMTP.AuthenticationType := atLogin; //caso precise autenticar IdSMTP.Username := ´teste´; IdSMTP.Password := ´123456´; IdMessage.Clear; IdMessage.From.Text :=´teste@seudominio.com.br´; //conta que irá aparecer idMessage.Recipients.EMailAddresses := ´email@email.com´; //email destino IdMessage.CCList.EMailAddresses := ´comcopia@email.com.br´; //com copia

Corpo do email

final
IdSMTP.Connect; try IdSMTP.Send(IdMessage); finally IdSMTP.Disconnect; end; Application.MessageBox(´Email enviado com sucesso!´, ´Confirmação´, MB_ICONINFORMATION + MB_OK);



GOSTEI 0
Corcos

Corcos

07/02/2007

Esqueci de falar uma coisa é interessate fazer para testes

coloca um memo e a propriedade OnStatus do componente TidSMTP coloque
Memo.Lines.Add(AStatusText);


assim vc consegue visualizar o que esta passando


GOSTEI 0
Laelsonc

Laelsonc

07/02/2007

Delphi 7 com Indy 10 que peguei nesse endereço -
[url]http://indy.fulgan.com/ZIP/[/url]

Vou tentar agora com o Indy 9.0.0.18.


GOSTEI 0
Laelsonc

Laelsonc

07/02/2007

Galera...eu mudei pra versao que 9.0.0.18 e funcionou blz. Nao vou mais esquentar a cabeça com a Versao 10. Valeu muito Obrigado amigos !


GOSTEI 0
Massuda

Massuda

07/02/2007

A dica do emerson funciona com Indy9. Com Indy10, que eu saiba (nunca usei), as DLLs necessárias são as DLLs padrão do projeto OpenSSL ( http://www.openssl.org ); não use as que tem no FTP fulgam.com pois essas DLLs são modificadas para funcionar com Indy9.

Seu código deveria ser algo assim...
IdSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL; 
IdSMTP1.Host := ´smtp.gmail.com´; 
IdSMTP1.Port := 465; 
IdSMTP1.UseTLS := utUseExplicitTLS;

IdSMTP1.AuthType := atDefault; 
IdSMTP1.Username := ´seu.username´; 
IdSMTP1.Password := ´sua.senha´; 

IdSMTP1.Connect; 
IdSMTP1.Send(IdMessage1); 
...
Não me lembro, mas talvez tenha que ativar o acesso ao servidor POP3 na sua conta GMail.


GOSTEI 0
Pestana_

Pestana_

07/02/2007

Corcos a uns tempos atras eu estavá tentando enviar e-mail através do delphi, mas eu não consegui estavá dando erro, eu tambem fiz diferente do que você fez, deve ser esse o motivo rsrsrsrs.

tem como você esplicar pra mim como você fez para que eu possa a retornar ao processo de enviar e-mail pelo o delphi ou se alguem poder me ajudar e agradeço.

D7.


abraços,
flw.


GOSTEI 0
Laelsonc

Laelsonc

07/02/2007

Ola Pestana... pegue ai o exemplo que eu fiz para o Gmail. Com a ajuda dos meus amigos ai esta funcionando blz!
A versao do Indy é a que falei acima. 9.0.0.18
[url]http://www.grupokariri.com.br/download/EmailIndy.rar[/url]

Vou desenvolver agora para enviar formatado em HTML.
Ate mais.


GOSTEI 0
Pestana_

Pestana_

07/02/2007

Ola Pestana... pegue ai o exemplo que eu fiz para o Gmail. Com a ajuda dos meus amigos ai esta funcionando blz! A versao do Indy é a que falei acima. 9.0.0.18 [url]http://www.grupokariri.com.br/download/EmailIndy.rar[/url] Vou desenvolver agora para enviar formatado em HTML. Ate mais.


valeu amigão, vou dar uma estudada no fonte agora.

abraços,
Pestana.


GOSTEI 0
Corcos

Corcos

07/02/2007

O meu botão de enviar e-mail em html, é um sistema de cadastro de atendimento


// ENVIO DE E-MAIL

IdSMTP.Host:=´smtp.mail.yahoo.com.br´;
IdSMTP.Port:= 25;
//IdSMTP.AuthenticationType := atLogin; //caso precise autenticar
IdSMTP.Username := ´login´;
IdSMTP.Password := ´senha´;

IdMessage.Clear;
IdMessage.From.Text :=´informatica@provedor.com.br´;
idMessage.Recipients.EMailAddresses := frmCadAtend.QryCadAtendimento.FieldByName(´EMAIL´).AsString;
IdMessage.CCList.EMailAddresses := ´chamado@provedor.com.br´;
//IdMessage.BccList.EMailAddresses := ´´; //edtCCO.Text; so se precisar
IdMessage.Subject := ´Atendimento número: ´+frmCadAtend.QryCadAtendimento.FieldByName(´IDCADATENDIMENTO´).AsString;

// tratamento do corpo da mensagem
IdMessage.ContentType := ´text/html´;
IdMessage.Body.Add(´<html><body>´);

IdMessage.Body.Add(´Data do chamado: ´+edtData.Text+ ´
´);
IdMessage.Body.Add(´Hora do chamado: ´+edtHora.Text+ ´
´);
//

IdMessage.Body.Add(´Hotel: ´+frmCadAtend.QryCadAtendimento.FieldByName(´HOTEL´).AsString+ ´
´);
IdMessage.Body.Add(´Funcionário: ´+frmCadAtend.QryCadAtendimento.FieldByName(´FUNCIONARIO´).AsString+ ´
´);
IdMessage.Body.Add(´Setor: ´+frmCadAtend.QryCadAtendimento.FieldByName(´SETOR´).AsString+´

´);
//

IdMessage.Body.Add(´Tipo de atendimento: ´+frmCadAtend.QryCadAtendimento.FieldByName(´TIPOATENDIMENTO´).AsString+´
´);
//

IdMessage.Body.Add(´
Descrição do problema: ´+frmCadAtend.QryCadAtendimento.FieldByName(´PROBPASSADO´).AsString+´
´);

if (frmCadAtend.QryCadAtendimento.FieldByName(´PENDENTE´).AsString = ´T´) then
begin
IdMessage.Body.Add(´Pendente: Sim
´);
IdMessage.Body.Add(´Prioridade de atendimento: ´+frmCadAtend.QryCadAtendimento.FieldByName(´PRIORIDADE´).AsString+´

´);
end;
if (frmCadAtend.QryCadAtendimento.FieldByName(´PENDENTE´).AsString = ´F´) then
begin
IdMessage.Body.Add(´Pendente: Não
´);
IdMessage.Body.Add(´Prioridade de atendimento: ´+frmCadAtend.QryCadAtendimento.FieldByName(´PRIORIDADE´).AsString+´

´);
//

IdMessage.Body.Add(´Problema apresentado: ´+frmCadAtend.QryCadAtendimento.FieldByName(´PROBAPRESENTADO´).AsString+´
´);
IdMessage.Body.Add(´Causa do problema: ´+frmCadAtend.QryCadAtendimento.FieldByName(´RESOLVPROBLEMA´).AsString+´
´);
end;
if (frmCadAtend.QryCadAtendimento.FieldByName(´FINALIZADO´).AsString = ´T´) then
IdMessage.Body.Add(´Finalizado: Sim
´)
else
IdMessage.Body.Add(´Finalizado: Não
´);
//

IdMessage.Body.Add(´Chamado aberto por: ´+frmCadAtend.QryCadAtendimento.FieldByName(´ATENDENTE´).AsString+´



´);
//

IdMessage.Body.Add(´Desenvolvido por: xxxxxxxxxxx
´);
IdMessage.Body.Add(´´+frmSobre.lblVersao.Caption+´



</body></html>´);


IdSMTP.Connect;
try
IdSMTP.Send(IdMessage);
finally
IdSMTP.Disconnect;
end;
Application.MessageBox(´Email enviado com sucesso!´, ´Confirmação´, MB_ICONINFORMATION + MB_OK);
// FIM ENVIO DE E-MAIL
end



GOSTEI 0
Pestana_

Pestana_

07/02/2007

valeu galera! deu certo,



flw,
Pestana.


GOSTEI 0
Scotchtriplo

Scotchtriplo

07/02/2007

Boa tarde, gostaria da ajuda de vcs pra enviar e-mail pelo Delphi 2006.


GOSTEI 0
Scotchtriplo

Scotchtriplo

07/02/2007

Preciso da ajude de vcs !!! com o yahoo eu consegui, mais como faço a autenticação com Hotmail.


GOSTEI 0
Massuda

Massuda

07/02/2007

O HotMail usa um protocolo diferente, proprietário, chamado por algumas pessoas de HttpMail. O Indy não suporta esse protocolo.


GOSTEI 0
Scotchtriplo

Scotchtriplo

07/02/2007

Ok, Obrigado, então como é que faço pra enviar e-mail via Hotmail ???


GOSTEI 0
Massuda

Massuda

07/02/2007

Não sei como fazer, apenas sei que com o TIdSMTP do Indy não dá; provavelmente dá para fazer com o TIdHTTP, mas não conheço o protocolo do Hotmail.


GOSTEI 0
Scotchtriplo

Scotchtriplo

07/02/2007

De qualquer forma valeu, se acaso descobrir como fazer, por favor me passa a dica.

Obrigado .


GOSTEI 0
POSTAR