Buscar

Enviar e-mail p/ gmail funcionado. (com autenticação)

Código

Enviar e-mail p/ Gmail funcionado. (com autenticação)

Usei indy 10, provavelmente funcione no 9 tbm.  
Usei delphi 2006, provavelmente funcione no 7 instalando o indy 10 nele.


vá ao site:

http://indy.fulgan.com/SSL/

e baixe o pacote: indy_OpenSSL096m.zip


Crie uma nova pasta; no delphi crie um novo projeto e salve-o na nova pasta.

descompacte o pacote: indy_OpenSSL096m.zip dentro da pasta do projeto, são as dlls de SSL necessárias p/ autenticação.




veja aki as config. do GMAIL:
*************************************************************************************
Incoming Mail (POP3) Server - requires SSL:     pop.gmail.com
Use SSL: Yes
Port: 995

Outgoing Mail (SMTP) Server - requires TLS:     smtp.gmail.com (use authentication)
Use Authentication: Yes
Use STARTTLS: Yes (some clients call this SSL)
Port: 465 or 587

Account Name:   your Gmail username (including @gmail.com)
Email Address:  your full Gmail email address (username@gmail.com)
Password:       your Gmail password
*************************************************************************************

///////////////////////////////////////////////////////////////////////////
Não esqueça de acessar sua conta do gmail pelo navegador, e em opçoes marcar a opção para que serviços pop3 possam acessar sua conta.  (isso é feito no seu email gmail nas configurações)
///////////////////////////////////////////////////////////////////////////





No seu projeto no delphi inclua:

das paletas indy:

idPOP31
IdSSLIOHandlerSocketOpenSSL1
botão
memo
um idmessage com o nome: IdMessageteste  ***a propriedade body deste compoente é a nossa mensagem****


abaixo de implementation cole:

uses
 
   IdText;

{$R *.dfm}



*****
configure seus compoentes:

***TIdPOP3*******************************

IOHandler = IdSSLIOHandlerSocketOpenSSL1
AutoLogin = True
Host = 'pop.gmail.com'
Username = 'seunome@gmail.com'
SSLoptions>Method> sslvSSLv2
SSLoptions>mode> sslmUnassigned
UseTLS = utUseImplicitTLS
Password = 'suasenha'
Port = 995
*******************************************



***TIdSSLIOHandlerSocketOpenSSL**********

Destination = 'pop.gmail.com:995'
Host = 'pop.gmail.com'
Port = 995
SSLOptions.Method = sslvSSLv2
SSLOptions.Mode = sslmUnassigned
*******************************************


no envento onclick do botão:


var
  lMsg: TIdMessage;
  liCount: Integer;
  numeroMsgs: Integer;

  begin
  //limpa o memo
   Memo1.Lines.Clear;
  //Conectamos!
  if not idpop31.Connected then
    Begin
    idpop31.Connect;
    end;
   
    //testa a conexão
    if not idpop31.Connected then
    Begin
    ShowMessage('Conexão não realizada!');
    Exit;
    End;
  //Obtem o nº de msg que há na caixa postal
  numeroMsgs := idpop31.CheckMessages;
  //escreve no memo o nº de msgs que existem na caixa postal
  Memo1.Lines.Add('Numero de mensagens: ' + IntToSTr(numeroMsgs));
  lMsg := TIdMessage.Create;
  try
    idpop31.Retrieve(1, lMsg);
    Memo1.Lines.Text := lMsg.MsgId;
    for liCount := 0 to lMsg.MessageParts.Count-1 do
      if lMsg.MessageParts[liCount] is TIdText then
        Memo1.Lines.AddStrings((lMsg.MessageParts[liCount] as TIdText).Body);


  finally
    lMsg.Free;
  end;


     
end;


fim funcionou, preciso aperfeiçoar ainda, mas não tive tempo. se enão me engano tha baixando uma msg só, tem que colokar um laço lá pra pegar todas.



*************************
*************************
agora preciso fazer mandar msg, se alguem conseguir me manda o tuto, p/ leandropremier*arroba*gmail.com
**************************
**************************

ainda estou no começo p/ enviar e tentando p/ ver se da certo:



*********
veja mais ou meno o codigo, pq preciso arrumar ainda:
*********
coloque outro IdSSLIOHandlerSocketOpenSSL2

configure assim:

***************************
IdSSLIOHandlerSocketOpenSSL2:

host: smtp.gmail.com
port: 587

SSLoptions>Method> sslvTLSv1
SSLoptions>mode> sslmUnassigned


***************************


envento onclike para enviar, que não envia nada. pq tha td errado:

          //
          //IdSSLIOHandlerSocketOpenSSL2.PassThrough := True;
          IdSMTP1.Connect();
          //IdSMTP1.SendCmd('STARTTLS');
         // IdSSLIOHandlerSocketOpenSSL2.PassThrough := false;
         // IdSMTP1.Authenticate();
          if not IdSMTP1.Connected then
          Begin
          ShowMessage('Conexão não realizada!');
          Exit;
          end;
          IdSMTP1.Send(IdMessageteste);
          IdSMTP1.Disconnect;
          //





**************************************
***************************************
****************************************
Por leandrogp9, pesquisei mt, e não conseguiria sem outros exemplos que encontrei na net e até aki no site, mesmo que não funcionassem foram de grd ajuda
***************************************
****************************************
*****************************************
 

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Rede
Adicionada dia: 11/02/07
Por: Leandro
Visualizada: 99711 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009