Como enviar email usando Indy 10?
Este exemplo mostra como enviar emails usando Indy10.
1 var 2 Email: TIdMessage; 3 begin 4 // SMTP é um TIdSMTP 5 // POP3 é um TIdPOP3 6 // UserPassProvider é um TIdUserPassProvider 7 8 Email := TIdMessage.Create(nil); 9 try 10 11 // ...ajusta remetente, destinatário, etc da mensagem... 12 Email.Subject := '...assunto...'; 13 Email.From.Address := 'remetente@mailinator.com'; 14 Email.Recipients.EMailAddresses := 'destinatario@mailinator.com'; 15 Email.Body.Text := '...texto da mensagem...'; 16 17 // conecta com o servidor POP3 18 // alguns provedores exigem isso 19 POP3.Host := 'seu-servidor-pop3'; 20 POP3.Username := 'seu-username'; 21 POP3.Password := 'sua-senha-secreta'; 22 POP3.Connect; 23 24 try 25 SMTP.Host := 'seu-servidor-smtp'; 26 27 // alguns servidores SMTP exigem login 28 SMTP.AuthType := satSASL; 29 UserPassProvider.Username := 'seu-username'; 30 UserPassProvider.Password := 'sua-senha-secreta'; 31 32 SMTP.Connect; 33 try 34 SMTP.Send(Email); 35 except 36 on E: Exception do begin 37 // o envio falhou, trata o erro 38 end; 39 end; 40 SMTP.Disconnect; 41 finally 42 POP3.Disconnect; 43 end; 44 finally 45 Email.Free; 46 end; 47 end;
Pontos importantes:
- Nem todo servidor SMTP exige que se conecte antes ao servidor POP3: nesse caso, tudo que é relacionado com o servidor POP3 pode ser omitido (linhas 19 a 22 e linha 42). Note que quando isso é necessário, deve-se permanecer conectado ao servidor POP3 enquanto estiver usando o servidor SMTP.
- Nem todo servidor SMTP requer autenticação: nesse caso, use SMTP.AuthType = atNone (linha 28) e não tem necessidade de username/senha (linhas 29 e 30).
- Para fazer autenticação no servidor SMTP, vá na aba Indy SASL e coloque no form um componente TIdUserPassProvider e pelo menos um dos componentes de mecanismo de autenticação (os componentes com nome iniciado com TIdSASL); geralmente o componente TIdSASLLogin é suficiente.
- Atribua o componente TIdUserPassProvider à propriedade UserPassProvider de cada componente de mecanismo de autenticação que você pos no form.
- Selecione o componente TIdSMTP que está no form e, no Object Inspector, ative o editor da propriedade SASLMechanisms e inclua na lista direita do editor os mecanismos listados na lista esquerda; os mecanismos mostrados correspondem aos componentes TIdSASL que você pôs no form.
- Procure permanecer conectado nos servidores POP3 e SMTP o mínimo de tempo possível. A maioria desses servidores irá desconectar você por inatividade ou por tempo.
- Este exemplo não funciona com o GMail e outros servidores que usam SSL.
Atualizado em 15/11/2007 Indy 10 é uma versão que está em desenvolvimento. Este código funciona usando a versão snapshot (Indy10.zip disponível no site indy.fulgan.com) de 15/11/2007; a versão snapshot é atualizada todos os dias, de modo que não posso garantir que vá funcionar sempre. De qualquer forma, o exemplo foi atualizado e está funcionando novamente.
Nenhum comentário:
Postar um comentário