Olá a todos dando continuidade ao nosso artigos de envios de emails, segui nosso segundo e último procedimento para envios de email com aplicações Delphi 7.
Neste artigo irei mostrar como é fácil e rápido o envio utilizando o Indy 9. Quando estava efetuando o processo encontrei muitas informações indicando para que fosse atualizado o componente para a versão 10, porém mesmo com essas alterações consegui fazer uma aplicação sólida e eficaz para o segmento necessário.
Para este exemplo estou disponibilizando, envios de email através do YAHOO, pois o mesmo não exige utilização comando POP2 para realizar a comunicação com o Servidor. Mas para uso com outros servidores de Emails basta acrescentar a opção pop de acordo com o servidor utilizado.
Vejam abaixo procedimento de envio.
var
xAnexo : Integer;
I : Integer;
AutenticouSMTP: boolean;
begin
//ENVIANDO VIA COMPONENTE INDY NATIVO
//** configura SMTP **
if IdSMTP.Connected then
try
IdSMTP.Disconnect;
except
end;
//Preparar Mensagem...
IdMessage := TIdMessage.Create(Self);
//IdMessage.Body.(MemMensagem);
//IdMessage.Body := MemMensagem.Lines;
IdMessage.CharSet := 'utf-8';
IdMessage.Encoding := meMIME;
//IdMessage.Clear;
//IdMessage.ContentType := 'TEXT/HTML';
IdMessage.ContentType:='multipart/mixed';
dm_dados.IBQ_parametros.Open;
IdMessage.From.Name :=Emitente fulano de tal; //nome do do emitente
IdMessage.From.Address :=usuario@email.com; //email do emitente
IdMessage.Priority := mpNormal;
IdMessage.Subject := EdtAssunto.Text; // assunto do email
IdMessage.Date := Now;
//Add Destinatário(s)
IdMessage.Recipients.Add;
IdMessage.Recipients.EMailAddresses :=edtPara.Text;
IdMessage.CCList.EMailAddresses :=edtcc.Text;
IdMessage.BccList.EMailAddresses :=edtbcc.Text;
//IdMessage.Recipients[0].Address := EdtPara.Text;
// corpo
// nesta opcão disponibilizo caso queira incluir alguma informacao da empresa ao roda'pe do email
IdMessage.Body.Clear;
IdMessage.Body.Add('<html>');
IdMessage.Body.Add(' <body>');
IdMessage.Body.Add(' <h4>Prezado(a)</h4>');
IdMessage.Body.Add(' <font face="Verdana" size=2>');
IdMessage.Body.Add(' Para eventuais esclarecimentos, estamos em plena disposição.');
IdMessage.Body.Add(' <hr size=1 noshade>');
IdMessage.Body.Add(' <font face="Courier New" size=2>');
IdMessage.Body.Add(' '+MemMensagem.Text);
IdMessage.Body.Add(' </font>');
IdMessage.Body.Add(' <b><font face="Tahoma" size=2 color="black">');
IdMessage.Body.Add(' <hr size=1 noshade>');
IdMessage.Body.Add(' '+NOME DA EMPRESA +'<BR>');
IdMessage.Body.Add(' <font color="blue">');
IdMessage.Body.Add(' '+ENDERECO DA EMPRESAg+'<BR>');
IdMessage.Body.Add(' </font>');
IdMessage.Body.Add(' </font></b>');
IdMessage.Body.Add(' </body>');
IdMessage.Body.Add('</html>');
//Tratando os arquivos anexos
IdMessage.MessageParts.Clear;
for I := 0 to LbxAnexos.Items.Count - 1 do
begin
TIdAttachment.Create(IdMessage.MessageParts, LbxAnexos.Items.Strings[I]);
end;
// autenticacao
if rgautenticacao.ItemIndex = 0 then
IdSMTP.AuthenticationType:= atLogin
else
IdSMTP.AuthenticationType:= atNone;
//-- conexao segura SSL
if chkSSL.Checked then
IdSMTP.IOHandler := IdSSLIOHandlerSocket1
else
// se não requer conexao segura
IdSMTP.IOHandler := nil;
AutenticouSMTP := False;
//Preparando Servidor...
IdSMTP := TIdSMTP.Create(Self);
dm_dados.IBQ_parametros.Open;
IdSMTP.Host :=smtp.mail.yahoo.com.br;// PODE SER PASSADO POR PARAMETRO
IdSMTP.Authenticationtype := atLogin;
IdSMTP.Port :=587r; //587 - 465 - 25
IdSMTP.Username := usuario@email.com.br;
IdSMTP.Password := 123456;
// efetua a conexao ao servidor SMTP
if not IdSMTP.Connected then
//try
begin
IdSMTP.Connect; // conecta ao SMTP
if FParametrosEmail.SMTPAutenticacao then // se requer autenticacao
AutenticouSMTP := IdSMTP.Authenticate // efetua a atenticacao e retorna o resultado para a variável
else // se nao requer autenticacao
AutenticouSMTP := True; // assume que a conexao foi bem sucedida
// end
//except
// on Exception do // em caso de erro gera um log com a mensagem de erro
//ShowMessage('Não foi possível conectar ao servidor SMTP: '+E.Message);
ShowMessage('Não foi possível conectar ao servidor SMTP');
end;
// se a conexao foi bem sucedida, envia a mensagem
if AutenticouSMTP and IdSMTP.Connected then
begin
IdSMTP.Send(IdMessage);
Application.MessageBox('Email enviado com sucesso!', 'Confirmação',MB_ICONINFORMATION + MB_OK);
end;
// depois de tudo pronto, desconecta do servidor SMTP
if IdSMTP.Connected then
IdSMTP.Disconnect;
Procedimento simples e rápido.
Mais um vez Obrigado a todos, até a próxima.
Nenhum comentário:
Postar um comentário