Access GMail accounts with Indy  

Send By: Radikal (Q3 Team)
Web : http://www.q3.nu
Email: radikal@q3.nu
Date: 17/06/20

Tip accessed 1525 times

 



GMail is the free mail service of Google.
Recently, the GMail accounts can also be accessed by means of POP3 and SMTP protocols (that is to say, to use them through a mail client program like OutLook)
It has a peculiarity, the access to GMail through POP3 uses encriptación SSL and No-Standard ports.
This tip explains briefly like connecting with service POP3 of GMail through the Indy components.

You need to put in one form these components:

  • A TidPop3 (idPop31) (Indy Clients Tab)

  • A TidMessage (idMessage1) (Indy Misc Tab)

  • A TIdSSLIOHandlerSocket (IdSSLIOHandlerSocket1) (Indy I/O handlers Tab)

  • A TMemo (Memo1)

  • A TButton (Button1)


  • So that the SSL works, the Indy uses the OpenSSL library, that is GPL and that another people do, for that reason, you have to download it so that the TIdSSLIOHandlerSocket can use it.

    I for this test, have downloaded it of: http://indy.fulgan.com/SSL/and the file that I have used is indy_openssl096.zip

    Descompress the the ZIP and put the two DLLs in the directory of your project.

    Now, make that idPop31 uses the IdSSLIOHandlerSocket1 putting it in its IOHandler property.

    Set the name of the pop server in the Host property of idPop31, that in the case of Gmail is pop.gmail.com, set the port, that in this case is special and is 995 and set the username and your password in the idPop31 component.


    Once made, to test the invention, put this code in the OnCLick de Button1:

     procedure TForm1.Button1Click(Sender: TObject);
     var
       n,
       nummsgs    : integer;
     begin
       Memo1.Lines.Clear;
       //Conectamos!
       idpop31.Connect(0);
    
       //Obtenemos el numero de emails que tenemos
       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;
    


    and you will have an example that will obtain the headers of the emails of GMail account.

    NOTE: Yo need an actual version of the Indy library. If your Delphi hasn't, dont worry, you can download it from the oficcial website: http://www.indyproject.org/