Delphi - Retrieve Email from IMAP4 Server

The following delphi example codes demonstrate how to retrieve email from IMAP4 server. This sample downloads emails from IMAP4 server and deletes the email after the email is retrieved.


Before you can use the following sample codes, you should download the EAGetMail Installer and install it on your machine at first. Full sample projects are included in this installer.

Add Reference

To use EAGetMail ActiveX Object in your Delphi project, the first step is “Add Unit file of EAGetMail to your project”. Please go to C:\Program Files\EAGetMail\Samples_Delphi\pop3_imap4_simple.delphi or C:\Program Files (x86)\EAGetMail\Samples_Delphi\pop3_imap4_simple.delphi folder, find EAGetMailObjLib_TLB.pas, and then copy this file to your project folder.

// include EAGetMailObjLib_TLB unit to your Delphi Project
unit Unit1;


Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, EAGetMailObjLib_TLB, StdCtrls;

Then you can start to use it in your Delphi Project.

You can also create EAGetMailObjLib_TLB.pas manually by Delphi like this:

  • Delphi 7 or eariler version

    First of all, create a standard delphi project: select menu Project -> Import Type Library, checked EAGetMail ActiveX Object and click Create Unit. Then include EAGetMailObjLib_TLB in your project.

    add reference in Delphi
  • Delphi XE or later version

    First of all, create a standard delphi project: select menu Component -> Import component... -> Import a type library -> checked EAGetMail ActiveX Object, have Generate Component Wrapper checked and click “Create Unit”. Then include EAGetMailObjLib_TLB in your project.

Delphi - Retrieve Email from IMAP4 Server - Exmaple

The following example codes demonstrate retrieving email from IMAP4 server. In order to run it correctly, please change email server, user, password, folder, file name value to yours.


To get full sample projects, please download and install EAGetMail on your machine.

Unit Unit1;


    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, EAGetMailObjLib_TLB;

    TForm1 = Class(TForm)
        Button1: TButton;
        Procedure Button1Click(Sender: TObject);
        { Private declarations }
        { Public declarations }

    MailServerPop3 = 0;
    MailServerImap4 = 1;

    Form1: TForm1;


{$R *.dfm}

Procedure TForm1.Button1Click(Sender: TObject);
    oMail: IMail;
    oClient: TMailClient;
    oServer: TMailServer;
    oTools: TTools;
    infos: OleVariant;
    i, UBound, Count: Integer;
    oInfo: IMailInfo;
    mailFolder: WideString;
    fileName: WideString;
        oTools := TTools.Create(Application);

        // Create a folder named "inbox" under
        // current directory to store the email files
        mailFolder := GetCurrentDir() + '\inbox';

        oServer := TMailServer.Create(Application);
        oServer.Server := '';
        oServer.User := '';
        oServer.Password := 'testpassword';
        oServer.Protocol := MailServerImap4;

        // Set IMAP4 Port
        oServer.Port := 143;

        // If your IMAP4 server requires SSL connection
        // Please add the following codes
        // oServer.SSLConnection := true;
        // oServer.Port := 993;

        oClient := TMailClient.Create(Application);
        oClient.LicenseCode := 'TryIt';


        infos := oClient.GetMailInfos();
        UBound := VarArrayHighBound(infos, 1);
        Count := UBound+1;
        ShowMessage(Format('Total %d email(s)', [Count]));

        For i := 0 To UBound Do
            oInfo := IDispatch(VarArrayGet(infos, i)) As IMailInfo ;
            ShowMessage(Format('Index: %d; Size: %d; UIDL: ' + oInfo.UIDL,
            [oInfo.Index, oInfo.Size]));

            // Generate a random file name by current local datetime,
            // You can use your method to generate the filename if you do not like it
            fileName := mailFolder + '\' + oTools.GenFileName(i) + '.eml';

            // Receive email from IMAP4 server
            oMail := oClient.GetMail(oInfo);

            ShowMessage('From: ' + oMail.From.Address + #13#10 +
                'Subject: ' + oMail.Subject);

            // Save email to local disk
            oMail.SaveAs(fileName, true);

            // Mark email as deleted from IMAP4 server

        // Quit and purge emails marked as deleted from IMAP4 server

        On ep:Exception Do
        ShowMessage('Error: ' + ep.Message);


32bit/x64 ActiveX DLL

Seperate builds of run-time dll for 32 and x64 platform

File Platform
Installation Path\EAGetMailObj.dll 32 bit
Installation Path\x64\EAGetMailObj.dll 64 bit


  • Standard EXE

    For VB6, C++, Delphi or other standard exe application, you can distribute EAGetMailObj.dll with your application to target machine without COM-registration and installer. To learn more detail, please have a look at Registration-free COM with Manifest File.

  • Script

    For ASP, VBScript, VBA, MS SQL Stored Procedure, you need to install EAGetMail on target machine by EAGetMail installer, both 32bit/x64 DLL are installed and registered.



If you have any comments or questions about above example codes, please click here to add your comments.