IMAP downloader
Retrieves a message list from the specified folder of an IMAP server and downloads the messages into local .EML files.
Usage
===================================================================== ImapDownload.exe ===================================================================== Downloads e-mail messages from IMAP server. The program is a sample for Rebex Mail for .NET component. For more info, see http://www.rebex.net/mail.net/ Syntax: ImapDownload.exe server[:port] -username username -password password [-folder path]
More info
The sample demonstrates:
- Retrieving message list from an IMAP server
 - Downloading message from an IMAP server
 - Saving MailMessage to a local file
 
C#
Imap client = new Imap();
try
{
    // Connect
    Console.WriteLine("Connecting to {0}:{1}...",
    config.Server, config.Port);
    client.Connect(config.Server, config.Port);
    // Login
    Console.WriteLine("Authorizing as {0}...", config.User);
    client.Login(config.User, config.Password);
    // Select folder
    Console.WriteLine("Selecting folder '{0}'...", config.Folder);
    client.SelectFolder(config.Folder);
    ImapFolder folder = client.CurrentFolder;
    // Show number of messages in the folder
    Console.WriteLine("{0} messages found.", folder.TotalMessageCount);
    // Download all messages
    for (int i = 1; i <= folder.TotalMessageCount; i++)
    {
        Console.WriteLine("Retrieving message {0}...", i);
        client.GetMessage(i, i + ".eml");
    }
    // Disconnect
    Console.WriteLine("Disconnecting...");
    client.Disconnect();
    return 0;
}
catch (Exception x)
{
    Console.WriteLine("Error occured: {0}\n", x.Message);
    Console.WriteLine(x);
    return 1;
}
finally
{
    client.Dispose();
}
VB.NET
Dim client As New Imap
Try
    ' Connect
    Console.WriteLine("Connecting to {0}:{1}...", _
    config.Server, config.Port)
    client.Connect(config.Server, config.Port)
    ' Login
    Console.WriteLine("Authorizing as {0}...", config.User)
    client.Login(config.User, config.Password)
    ' Select folder
    Console.WriteLine("Selecting folder '{0}'...", config.Folder)
    client.SelectFolder(config.Folder)
    Dim folder As ImapFolder = client.CurrentFolder
    ' Show number of messages in the folder
    Console.WriteLine("{0} messages found.", folder.TotalMessageCount)
    ' Download all messages
    Dim i As Integer
    For i = 1 To folder.TotalMessageCount
        Console.WriteLine("Retrieving message {0}...", i)
        client.GetMessage(i, i & ".eml")
    Next i
    ' Disconnect
    Console.WriteLine("Disconnecting...")
    client.Disconnect()
    Return 0
Catch x As Exception
    Console.WriteLine("Error occured: {0}" & _
      ControlChars.Lf, x.Message)
    Console.WriteLine(x)
    Return 1
Finally
    client.Dispose()
End Try