Rebex



Sample: 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 

See also: