Analitcs

Pesquisar no conteúdo do blog.atlabs.com.br

quinta-feira, 31 de maio de 2012

DELPHI - Envio de E-Mail no Delphi (Indy 10) - Funciona com Servidor SSL

Reações: 



Site das DLL'S: https://indy.fulgan.com/SSL/

// ATLabs 07/02/2013
Uses
// Declarar na seção uses
 , IdBaseComponent, IdComponent // Units Genéricas do Indy
 , IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL // Objeto SSL
 , IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, IdSMTP // Objeto SMTP
 , IdMessage // Objeto de Mensagem
 , IdAttachmentFile // Objeto de Arquivos Anexos

// DLL'S para funcionamento da função: 
// http://www.atlabs.com.br/blog/download/DLL_SSL_INDY.rar
// OU DEMO + DLLS - Adicionado em 24-09-2012
// 
// http://www.atlabs.com.br/blog/download/DemoIndProject10_EnvioDeEmail_Mais_Dlls.rar
//--------------------------------------------


function EnviarEmail(aHost : String; aPort : Integer; aLogin, aSenha,aListaEmail, aAssunto, aCorpo : String; aAuth, aAuthSSL : Boolean) : Boolean;
var
 AuthSSL : TIdSSLIOHandlerSocketOpenSSL;
 IdSMTP    : TIdSMTP;
 IdMessage : TIdMessage;
Const
 ArqTeste = 'c:\teste.txt';
begin
  Result:= False;
  IdSMTP    := TIdSMTP.Create(nil);
  IdMessage := TIdMessage.Create(nil);
  try
    IdSMTP.Host     := aHost;
    IdSMTP.Port     := aPort;
    IdSMTP.AuthType := satDefault;
    IdSMTP.Username := aLogin;
    IdSMTP.Password := aSenha;
    if aAuthSSL then
    begin
      AuthSSL                   := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
      IdSMTP.IOHandler          := AuthSSL;
      IdSMTP.UseTLS             := utUseImplicitTLS;
      AuthSSL.SSLOptions.Method := sslvSSLv3;
      AuthSSL.SSLOptions.Mode   := sslmClient;
    end;
    if aAuth then
      IdSMTP.AuthType := satDefault
    else
      IdSMTP.AuthType := satNone; 
    try
    IdSMTP.Connect;
    IdMessage.From.Address               := aLogin;
    IdMessage.Recipients.EMailAddresses  := aListaEmail;
    IdMessage.Subject                    := aAssunto;
    IdMessage.Body.Text:=                'Data/Hora: ' + FormatDateTime('dd/MM/yyyy HH:mm:ss', Now) +
                                         #13#10#13#10 +
                                         aCorpo;
    IdMessage.Body.SaveToFile(ArqTeste);
    IdMessage.MessageParts.Clear; // Limpa os anexos da lista
    TIdAttachmentFile.Create(IdMessage.MessageParts, TFileName(ArqTeste)); // adiciona anexo na lista, pode ser utilizado com looping

    IdSMTP.Send(IdMessage);
    ShowMessage('E-Mail Enviado com sucesso para: ' +  aListaEmail);
    except
      on E: Exception do
      begin
        ShowMessage('Erro ao enviar E-Mail:'+#13#10+e.Message);
        Exit;
      end;
    end;
  finally
    IdSMTP.Disconnect;
    FreeAndNil(IdSMTP);
    FreeAndNil(IdMessage);
    if AuthSSL <> nil then
    FreeAndNil(AuthSSL);
  end;
  Result:= True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  EnviarEmail('smtp.gmail.com', 465, 'conta@gmail.com','senha','destinatario@gmail.com','Envio de email','CORPO DA MENSAGEM', True, True);
end;

/*TESTADO EM 14-06-2012*/
//----------------------

//Andre Santos 6 de junho de 2014 19:33//Fiz o teste com o Gmail e está OK.

//Para funcionar com o HOTMAIL vc tem q mudar a seguinte linha: 

//DE:

//IdSMTP.UseTLS := utUseImplicitTLS;

//PARA:
IdSMTP.UseTLS := utUseExplicitTLS;

//Para a mudança ficar automática eu acrescentei ao código, da //seguinte forma:

if (copy(aLogin,pos('@',aLogin),Length(aLogin)) = '@hotmail.com') then
  IdSMTP.UseTLS := utUseExplicitTLS
else
  IdSMTP.UseTLS := utUseImplicitTLS; 

//Lembrando que o HOTMAIL utiliza as seguintes configurações:

//Servidor SMTP: smtp.live.com

//Porta: 25

//Autenticação: True 

//SSL: True 

//Teste realizado: 06/06/2014 - Funcionando 

//Utilizo os componentes INDY do DELPHI XE 5 - Andre Santos 6 de junho de 2014 19:33

// E Caso precisem  

Validação de endereço de email

http://blog.atlabs.com.br/2012/06/validacao-de-endereco-de-e-mail.html  

WINDOWS - Instalação do ODBC MySQL no windows 7 (x64)

Reações: 



// ATLabs 31-05-2012
PQP... depois de madrugadas sem fazer funcionar esta merda!!! Consegui!! Fica ai pro futuro:


Instalar o conector: mysql-connector-odbc-3[1].51.25-win32.msi


Abrir o programa: C:\Windows\SysWOW64\odbcad32.exe

Cadastrar as configurações do alias


Simples assim.


Nota: Continuar não usando o conector 5.1, não funciona para conexões com o delphi.
//-----------------

Max Gehringer