12 de jan. de 2007

Como enviar emails usando Indy 9?

Exemplo básico de envio de email usando Delphi e Indy 9:

1 var 2 Email: TIdMessage; 3 begin 4 // SMTP é um TIdSMTP 5 // POP3 é um TIdPOP3; 6 7 Email := TIdMessage.Create(nil); 8 try 9 10 // ...ajusta remetente, destinatário, etc da mensagem... 11 12 POP3.Host := 'seu-servidor-pop3'; 13 POP3.Username := 'seu-username'; 14 POP3.Password := 'sua-senha-secreta'; 15 16 POP3.Connect; 17 18 try 19 SMTP.Host := 'seu-servidor-smtp'; 20 SMTP.AuthType := atLogin; 21 SMTP.Username := 'seu-username'; 22 SMTP.Password := 'sua-senha-secreta'; 23 24 SMTP.Connect; 25 try 26 SMTP.Send(Email); 27 except 28 on E: Exception do begin 29 // envio falhou 30 end; 31 end; 32 SMTP.Disconnect; 33 finally 34 POP3.Disconnect; 35 end; 36 finally 37 Email.Free; 38 end; 39 end;

Pontos importantes:
  • Nem todo servidor SMTP requer autenticação: nesse caso, TIdSMTP.AuthType, TIdSMTP.Username e TIdSMTP.Password podem ser omitidos.
  • Nem todo servidor SMTP exige que antes se conecte ao servidor POP3: nesse caso, tudo que é relacionado com o servidor POP3 pode ser omitido. Note que quando isso é necessário, deve se permanecer conectado ao servidor POP3 enquanto estiver usando o servidor SMTP.
  • Permamenecer conectado aos servidores POP3 e SMTP o mínimo de tempo possível. A maioria desses servidores irá desconectar o cliente por inatividade ou por tempo.
  • Este exemplo não funciona com o GMail e outros servidores que usam SSL

Um comentário:

db disse...

Genial!

O usuário alterou as configurações de autenticação no servidor e a conexão com POP3 passou a ser necessária.