Mandar email pelo Gmail com Indy
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
Curtidas 0
Respostas
Rjun
07/02/2007
Qual o problema que você esta tendo? Qual versão do Indy você está usando?
GOSTEI 0
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]
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
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.
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.
Agradeço desde de ja as ajudas...
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
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
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
Corpo do email
final
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
07/02/2007
Esqueci de falar uma coisa é interessate fazer para testes
coloca um memo e a propriedade OnStatus do componente TidSMTP coloque
assim vc consegue visualizar o que esta passando
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
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.
[url]http://indy.fulgan.com/ZIP/[/url]
Vou tentar agora com o Indy 9.0.0.18.
GOSTEI 0
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
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...Não me lembro, mas talvez tenha que ativar o acesso ao servidor POP3 na sua conta GMail.
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); ...
GOSTEI 0
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.
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
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.
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_
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
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_
07/02/2007
valeu galera! deu certo,
flw,
Pestana.
flw,
Pestana.
GOSTEI 0
Scotchtriplo
07/02/2007
Boa tarde, gostaria da ajuda de vcs pra enviar e-mail pelo Delphi 2006.
GOSTEI 0
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
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
07/02/2007
Ok, Obrigado, então como é que faço pra enviar e-mail via Hotmail ???
GOSTEI 0
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
07/02/2007
De qualquer forma valeu, se acaso descobrir como fazer, por favor me passa a dica.
Obrigado .
Obrigado .
GOSTEI 0