Retrieves all emails' information from POP3/IMAP4/MS Exchange Server.
[Visual Basic] Public Function GetMailInfos( _ ) As MailInfo() Public Async Function GetMailInfosAsync( _ ) As Task (Of MailInfo())
[C#] public MailInfo[] GetMailInfos( ); public async Task<MailInfo[]> GetMailInfosAsync( );
[C++] public: array<MailInfo^> GetMailInfos( );
[JScript] public function GetMailInfos( ) : MailInfo [];
Return Value
Remarks
By default, this method returns all emails in "INBOX". You can use SelectFolder method to retrieve email list in selected folder.
GetMailInfosParam property can set some filters for returned email list on server.
For example, you can use GetMailInfosParam property to retrieve only unread/new email(s) from server, then use MailClient.MarkAsRead method to mark the email as read to prevent retrieving the same email again.
Example
[Visual Basic, C#, C++] The following example demonstrates how to receive email with EAGetMail POP3 & IMAP Component, but it doesn't demonstrates the events and mail parsing usage. To get the full samples of EAGetMail, please refer to Samples section.
[VB - Retrieve Email from POP3/IMAP4/MS Exchange Server]
Imports System
Imports System.Globalization
Imports System.IO
Imports System.Text
Imports EAGetMail
Public Class TestClass
    ' Generate an unqiue email file name based on date time.
    Shared Function _generateFileName(ByVal sequence As Integer) As String
        Dim currentDateTime As DateTime = DateTime.Now
        Return String.Format("{0}-{1:000}-{2:000}.eml",
                            currentDateTime.ToString("yyyyMMddHHmmss", New CultureInfo("en-US")),
                            currentDateTime.Millisecond,
                            sequence)
    End Function
    Public Sub ReceiveMail(server As String, user As String, password As String, useSsl As Boolean)
        Try
            ' Create a folder named "inbox" under current directory
            ' to save the email retrieved.
            Dim localInbox As String = String.Format("{0}\inbox", Directory.GetCurrentDirectory())
            ' If the folder is not existed, create it.
            If Not Directory.Exists(localInbox) Then
                Directory.CreateDirectory(localInbox)
            End If
            ' To receive email from IMAP4 server, please change
            ' ServerProtocol.Pop3 to ServerProtocol.Imap4 in MailServer constructor
            ' To receive email with Exchange Web Service, please change
            ' ServerProtocol.Pop3 to ServerProtocol.ExchangeEWS to MailServer constructor
            ' To receive email with Exchange WebDAV, please change
            ' ServerProtocol.Pop3 to ServerProtocol.ExchangeWebDAV to MailServer constructor
            ' Exchange Server supports POP3/IMAP4 protocol as well, but in Exchange 2007
            ' Or later version, POP3/IMAP4 service Is disabled by default. If you don't want to use POP3/IMAP4
            ' to download email from Exchange Server, you can use Exchange Web Service (Exchange 2007-2019 Or
            ' later version) Or WebDAV (Exchange 2000/2003) protocol.
            ' Most modern email server require SSL/TLS connection, 
            ' set useSsl to true Is recommended.
            Dim oServer As New MailServer(server, user, password, useSsl,
                        ServerAuthType.AuthLogin, ServerProtocol.Pop3)
            ' POP3 port Is 110, POP3 SSL port Is 995
            ' IMAP4 port Is 143,  IMAP4 SSL port Is 993.
            ' EWS/WebDAV, please ignore Port property.
            If oServer.Protocol = ServerProtocol.Pop3 Then
                oServer.Port = If(useSsl, 995, 110)
            ElseIf oServer.Protocol = ServerProtocol.Imap4 Then
                oServer.Port = If(useSsl, 993, 143)
            End If
            Console.WriteLine("Connecting server ...")
            Dim oClient As New MailClient("TryIt")
            oClient.Connect(oServer)
            Console.WriteLine("Retrieving email list ...")
            Dim infos() As MailInfo = oClient.GetMailInfos()
            Console.WriteLine("Total {0} email(s)", infos.Length)
            For i As Integer = 0 To infos.Length - 1
                Console.WriteLine("Checking {0}/{1} ...", i + 1, infos.Length)
                Dim info As MailInfo = infos(i)
                Console.WriteLine("UIDL: {0}", info.UIDL)
                Console.WriteLine("Index: {0}", info.Index)
                Console.WriteLine("Size: {0}", info.Size)
                ' IMAP4MailFlags is supported by IMAP only.
                Console.WriteLine("Flags: {0}", info.IMAP4MailFlags)
                ' POP3 protocol doesn't support read flag.
                Console.WriteLine("Read: {0}", info.Read)
                Console.WriteLine("Deleted: {0}", info.Deleted)
                ' Generate an unqiue email file name based on date time.
                Dim fileName As String = _generateFileName(i + 1)
                Dim fullPath As String = String.Format("{0}\{1}", localInbox, fileName)
                Console.WriteLine("Downloading {0}/{1} ...", i + 1, infos.Length)
                Dim oMail As Mail = oClient.GetMail(info)
                ' Save email to local disk
                oMail.SaveAs(fullPath, True)
                ' Mark email as deleted on server.
                Console.WriteLine("Deleting ... {0}/{1}", i + 1, infos.Length)
                oClient.Delete(info)
            Next
            Console.WriteLine("Disconnecting ...")
            ' Delete method just mark the email as deleted, 
            ' Quit method expunge the emails from server permanently.
            oClient.Quit()
            Console.WriteLine("Completed!")
        Catch ep As Exception
            Console.WriteLine("Error: {0}", ep.Message)
        End Try
    End Sub
End Class
[C# - Retrieve Email from POP3/IMAP4/MS Exchange Server]
using System;
using System.IO;
using System.Globalization;
using System.Text;
using EAGetMail;
class TestClass
{
    // Generate an unqiue email file name based on date time
    static string _generateFileName(int sequence)
    {
        DateTime currentDateTime = DateTime.Now;
        return string.Format("{0}-{1:000}-{2:000}.eml",
            currentDateTime.ToString("yyyyMMddHHmmss", new CultureInfo("en-US")),
            currentDateTime.Millisecond,
            sequence);
    }
    public void ReceiveMail(string server, string user, string password, bool useSsl)
    {
        try
        {
            // Create a folder named "inbox" under current directory
            // to save the email retrieved.
            string localInbox = string.Format("{0}\\inbox", Directory.GetCurrentDirectory());
            // If the folder is not existed, create it.
            if (!Directory.Exists(localInbox))
            {
                Directory.CreateDirectory(localInbox);
            }
            // To receive email from IMAP4 server, please change
            // ServerProtocol.Pop3 to ServerProtocol.Imap4 in MailServer constructor
            // To receive email with Exchange Web Service, please change
            // ServerProtocol.Pop3 to ServerProtocol.ExchangeEWS to MailServer constructor
            // To receive email with Exchange WebDAV, please change
            // ServerProtocol.Pop3 to ServerProtocol.ExchangeWebDAV to MailServer constructor
            // Exchange Server supports POP3/IMAP4 protocol as well, but in Exchange 2007
            // or later version, POP3/IMAP4 service is disabled by default. If you don't want to use POP3/IMAP4
            // to download email from Exchange Server, you can use Exchange Web Service (Exchange 2007-2019 or
            // later version) or WebDAV (Exchange 2000/2003) protocol.
            // Most modern email server require SSL/TLS connection, 
            // set useSsl to true is recommended.
            MailServer oServer = new MailServer(server, user, password, useSsl,
                ServerAuthType.AuthLogin, ServerProtocol.Pop3);
            // POP3 port is 110, POP3 SSL port is 995
            // IMAP4 port is 143,  IMAP4 SSL port is 993.
            // EWS/WebDAV, please ignore Port property.
            if (oServer.Protocol == ServerProtocol.Pop3)
            {
                oServer.Port = (useSsl) ? 995 : 110;
            }
            else if (oServer.Protocol == ServerProtocol.Imap4)
            {
                oServer.Port = (useSsl) ? 993 : 143;
            }
            Console.WriteLine("Connecting server ...");
            MailClient oClient = new MailClient("TryIt");
            oClient.Connect(oServer);
            Console.WriteLine("Retreiving email list ...");
            MailInfo[] infos = oClient.GetMailInfos();
            Console.WriteLine("Total {0} email(s)", infos.Length);
            for (int i = 0; i < infos.Length; i++)
            {
                Console.WriteLine("Checking {0}/{1} ...", i+1, infos.Length);
                MailInfo info = infos[i];
                Console.WriteLine("UIDL: {0}", info.UIDL);
                Console.WriteLine("Index: {0}", info.Index);
                Console.WriteLine("Size: {0}", info.Size);
                // IMAP4MailFlags is supported by IMAP4 protocol only.
                Console.WriteLine("Flags: {0}", info.IMAP4MailFlags);
                // POP3 protocol doesn't support read flag
                Console.WriteLine("Read: {0}", info.Read);
                Console.WriteLine("Deleted: {0}", info.Deleted);
                // Generate an unqiue email file name based on date time.
                string fileName = _generateFileName(i + 1);
                string fullPath = string.Format("{0}\\{1}", localInbox, fileName);
                Console.WriteLine("Downloading {0}/{1} ...", i + 1, infos.Length);
                Mail oMail = oClient.GetMail(info);
                // Save mail to local file
                oMail.SaveAs(fullPath, true);
                // Mark the email as deleted on server.
                Console.WriteLine("Deleting ... {0}/{1}", i + 1, infos.Length);
                oClient.Delete(info);
            }
            Console.WriteLine("Disconnecting ...");
            // Delete method just mark the email as deleted, 
            // Quit method expunge the emails from server permanently.
            oClient.Quit();
            Console.WriteLine("Completed!");
        }
        catch (Exception ep)
        {
            Console.WriteLine("Error: {0}", ep.Message);
        }
    }
}
[C++/CLI - Retrieve Email from POP3/IMAP4/MS Exchange Server]
using namespace System;
using namespace System::Globalization;
using namespace System::IO;
using namespace EAGetMail; //add EAGetMail namespace
// Generate an unqiue email file name based on date time
static String ^ _generateFileName(int sequence)
{
    DateTime currentDateTime = DateTime::Now;
    return String::Format("{0}-{1:000}-{2:000}.eml",
        currentDateTime.ToString("yyyyMMddHHmmss", gcnew CultureInfo("en-US")),
        currentDateTime.Millisecond,
        sequence);
}
void ReceiveMail(String ^server, String ^user, String ^password, bool useSsl)
{
    try
    {
        // Create a folder named "inbox" under current directory
        // to save the email retrieved.
        String ^localInbox = String::Format("{0}\\inbox", Directory::GetCurrentDirectory());
        // If the folder is not existed, create it.
        if (!Directory::Exists(localInbox))
        {
            Directory::CreateDirectory(localInbox);
        }
        // To receive email from IMAP4 server, please change
        // ServerProtocol.Pop3 to ServerProtocol.Imap4 in MailServer constructor
        // To receive email with Exchange Web Service, please change
        // ServerProtocol.Pop3 to ServerProtocol.ExchangeEWS to MailServer constructor
        // To receive email with Exchange WebDAV, please change
        // ServerProtocol.Pop3 to ServerProtocol.ExchangeWebDAV to MailServer constructor
        // Exchange Server supports POP3/IMAP4 protocol as well, but in Exchange 2007
        // or later version, POP3/IMAP4 service is disabled by default. If you don't want to use POP3/IMAP4
        // to download email from Exchange Server, you can use Exchange Web Service (Exchange 2007-2019 or
        // later version) or WebDAV (Exchange 2000/2003) protocol.
        // Most modern email server require SSL/TLS connection, 
        // set useSsl to true is recommended.
        MailServer ^oServer = gcnew MailServer(server, user, password, useSsl,
            ServerAuthType::AuthLogin, ServerProtocol::Pop3);
        // POP3 port is 110, POP3 SSL port is 995
        // IMAP4 port is 143,  IMAP4 SSL port is 993.
        // EWS/WebDAV, please ignore Port property.
        if (oServer->Protocol == ServerProtocol::Pop3)
        {
            oServer->Port = (useSsl) ? 995 : 110;
        }
        else if (oServer->Protocol == ServerProtocol::Imap4)
        {
            oServer->Port = (useSsl) ? 993 : 143;
        }
        Console::WriteLine("Connecting server ...");
        MailClient ^oClient = gcnew MailClient("TryIt");
        oClient->Connect(oServer);
        
        Console::WriteLine("Retreiving email list ...");
        array<MailInfo^>^infos = oClient->GetMailInfos();
        Console::WriteLine("Total {0} email(s)", infos->Length);
        for (int i = 0; i < infos->Length; i++)
        {
            Console::WriteLine("Checking {0}/{1}", i + 1, infos->Length);
            MailInfo ^info = infos[i];
            Console::WriteLine("UIDL: {0}", info->UIDL);
            Console::WriteLine("Index: {0}", info->Index);
            Console::WriteLine("Size: {0}", info->Size);
            // IMAP4MailFlags is supported by IMAP4 protocol only
            Console::WriteLine("Flags: {0}", info->IMAP4MailFlags);
            // POP3 doesn't support read flag
            Console::WriteLine("Read: {0}", info->Read);
            Console::WriteLine("Deleted: {0}", info->Deleted);
            
            // Generate an unqiue email file name based on date time
            String^ fileName = _generateFileName(i + 1);
            String^ fullPath = String::Format("{0}\\{1}", localInbox, fileName);
            Console::WriteLine("Downloading {0}/{1}", i + 1, infos->Length);
            Mail ^oMail = oClient->GetMail(info);
            
            // Save email to local disk
            oMail->SaveAs(fullPath, true);
            // Mark email as deleted on server.
            Console::WriteLine("Deleting ... {0}/{1}", i + 1, infos->Length);
            oClient->Delete(info);
        }
        
        Console::WriteLine("Disconnecting ...");
        // Delete method just mark the email as deleted, 
        // Quit method expunge the emails from server permanently.
        oClient->Quit();
        Console::WriteLine("Completed!");
    }
    catch (Exception ^ep)
    {
        Console::WriteLine("Error: {0}", ep->Message);
    }
}
    See Also
        MailClient.GetMailInfosParam Property
        User Authentication and SSL/TLS Connection
        MailInfo Class
        Mail Class
    
Online Tutorials
        Read Email and Parse Email in C# - Tutorial
        Read Email and Parse Email in VB.NET - Tutorial
        Read Email and Parse Email C++/CLI - Tutorial
    
        Read Email over SSL/TLS Connection in C# - Tutorial
        Read Email from Gmail Account in C# - Tutorial
        Read Email from Yahoo Account in C# - Tutorial
        Read Email from Hotmail Account in C# - Tutorial
    
        Read Email over SSL/TLS Connection in VB.NET - Tutorial
        Read Email from Gmail Account in VB.NET - Tutorial
        Read Email from Yahoo Account in VB.NET - Tutorial
        Read Email from Hotmail Account in VB.NET - Tutorial
    
        Read Email over SSL/TLS Connection C++/CLI - Tutorial
        Read Email from Gmail Account in C++/CLI - Tutorial
        Read Email from Yahoo Account in C++/CLI - Tutorial
        Read Email from Hotmail Account in C++/CLI - Tutorial