[Tutorial] Interação entre Delphi e servidor de e-mail

14 de Julho de 2012
83
42
18
24
#1
Primeiramente é necessário que o usuário tenha uma conta de e-mail cadastrada em algum servidor de e-mails. Em seguida o programador deve obter alguns dados com relação à sua conta de e-mail, listados abaixo:

- host SMTP (para envio de mensagens)
- port utilizado pelo servidor de e-mails
- login e senha do usuário remetente.



Neste exemplo será usado o Delphi 7 e uma conta de e-mail do Yahoo.
Usaremos um componente que já vem no Delphi chamado IdSMTP que fará a comunicação com o servidor de e-mail, no caso o Yahoo.
A escolha deste componente se deve ao fato de ele permitir autenticação com senha, um requisito de diversos servidores de e-mail disponíveis no mercado.


----------------------------------

Pois bem, vamos ao que interessa:

Adicione ao seu formulário um componente IdSMTP, presente na aba Indy Client, e um IdMessage, da aba Indy Misc.


Agora passaremos a configurar o IdSMTP, setando as propriedades a seguir:
 


- AuthenticationType = atLogin
- Host = smtp.mail.yahoo.com.br
- Password = [senha do usuário do yahoo]
- Port = 587
- UserId = [login do usuário do yahoo].
------------------------------------


Apresentamos agora o código fonte da função utilizada para configuraro IdMessage e o IdSMTP, e enviar a mensagem.
 


procedure EnviaMail( )
begin
//Configuração do IdMessage (dados da mensagem)
IdMessage1.From.Address := 'remetente@yahoo.com.br'; //e-mail do remetente
IdMessage1.Recipients.EMailAddresses := 'destinatario@mail.com.br'; //e-mail do destinatário
IdMessage1.Subject := 'Assunto do e-mail'; //Assunto
IdMessage1.Body.Add('Mensagem do e-mail'); //Corpo da mensagem

//Configuração do IdSMTP
IdSMTP1.Host := 'smtp.mail.yahoo.com.br'; //Host SMTP do yahoo
IdSMTP1.Port := 587; //Port do yahoo
IdSMTP1.UserId := 'usuario'; //Login do usuário
IdSMTP1.Password := 'senha'; //Senha do usuário

IdSMTP1.Connect; //Estabelece a conexão
IdSMTP1.Authenticate; //Faz a autenticação

try
IdSMTP1.Send(IdMessage1); //Envia a mensagem
except
showmessage('ERRO'); //Mensagem de erro
end;
end;

--------------------------------------------------------------------------------


Creditos:

Tutorial: Mailton