You are on page 1of 1

Acessando contas GMail com o Indy via POP3 SSL

O GMail é o serviço de correio grátis do Google. Recentemente, as contas GMail


também poderão ser acessadas por meio do protocolo POP3 e SMTP (e podem ser
utilizadas por programas cliente de correio como o Outlook).
O Gmail tem a seguinte peculiaridade: o acesso ao mesmo via POP3 utiliza
encriptação SSL e portas não padronizadas. Esta dica, explica resumidamente como
fazer conexões POP3 service do GMail, através de componentes Indy.
Precisamos colocar estes componentes em um formulário:
• Um TidPop3 (idPop31) (Indy Aba Clients)
• Um TidMessage (idMessage1) (Indy Aba Misc)
• Um TIdSSLIOHandlerSocket (IdSSLIOHandlerSocket1) (Indy Aba I/O
handlers)
• Um TMemo (Memo1)
• Um TButton (Button1)

Para que o SSL funcione, o Indy usa a biblioteca OpenSSL, que é GPL e foi
implementada por terceiros, por isso, temos que fazer o download de forma que o
TIdSSLIOHandlerSocket possa usá-la.
Para este teste, fizemos o download de: http://indy.fulgan.com/SSL e utilizamos o
arquivo indy_openssl096.zip. Descomprimimos o ZIP e colocamos os dois DLLs no
diretório do projeto.
Agora, fazemos com que o aquidPop31 utilize o IdSSLIOHandlerSocket1,
configurando-o na propriedade IOHandler.
Colocamos o nome do servidor pop na propriedade Host de idPop31 - que no caso
do Gmail é pop.gmail.com - designamos a porta - que para este caso em especial é
a porta 995 - e atribuímos o username e senha no componente idPop31.
Isto feito, para testar a implementação, inserimos este trecho de código no evento
OnCLick de Button1:

procedure TForm1.Button1Click(Sender: TObject);


var
n, nummsgs: integer;
begin
Memo1.Lines.Clear;
//Conectamos!
idpop31.Connect(0);
//Obtemos o numero de emails que ha na fila
NumMsgs := idpop31.CheckMessages;
Memo1.lines.add('Emails:' +IntToStr(NumMsgs));
for n:=1 to NumMsgs do
begin
idpop31.RetrieveHeader(n,idMessage1);
Memo1.Lines.Add('Email Nº:'+IntToStr(n)+
' De:'+idMessage1.From.Text+
' Tema:'+idMessage1.Subject);
idMessage1.Clear;
end;
idpop31.Disconnect;
end;

E teremos um exemplo que obterá os cabeçalhos dos e-mails da conta de GMail.

Nota: precisamos de uma versão atualizada da biblioteca Indy. Se o seu Delphi não
a tiver, não se preocupe, pode fazer o download no site oficial:
http://www.indyproject.org.

You might also like