Faça sua buscar ...

segunda-feira, 10 de março de 2014

Envio de Email utilizando Indy 9 Delphi 7

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