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.