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