public Task AuthenticateAsync( string userName, string password, object userState = null )
Asynchronously connect to an IMAP server and list existing mailboxes (Task-based asynchronous approach).
using System; using System.ComponentModel; using System.Text; using ComponentPro.Net.Mail; using ComponentPro; ... // Create a new instance. Imap client = new Imap(); try { // Connect to the IMAP server asynchronously. await client.ConnectAsync("myserver"); // Or you can specify the IMAP port with // await client.ConnectAsync("myserver", 143); // Authenticate the user asynchronously. await client.AuthenticateAsync("userName", "password"); // Do something here... StringBuilder sb = new StringBuilder(); FolderCollection list = client.ListFolders(); for (int i = 0; i < list.Count; i++) { sb.AppendFormat("{0} - {1}\r\n", i + 1, list[i].Name); } Console.WriteLine(sb.ToString()); // ... // Disconnect asynchronously. await client.DisconnectAsync(); } catch (Exception ex) { Console.WriteLine("Error: " + ex.ToString()); }
Asynchronously connect to an IMAP server and list existing mailboxes (Event-based asynchronous approach).
using System; using System.ComponentModel; using System.Text; using ComponentPro.Net.Mail; using ComponentPro; ... public void DoAsyncConnect() { // Create a new instance. Imap client = new Imap(); client.ConnectCompleted += client_ConnectCompleted; client.AuthenticateCompleted += client_AuthenticateCompleted; client.DisconnectCompleted += client_DisconnectCompleted; // Connect to the IMAP server asynchronously. client.ConnectAsync("myserver"); // Or you can specify the IMAP port with // client.ConnectAsync("myserver", 143); // Your code here // ... } void client_ConnectCompleted(object sender, ExtendedAsyncCompletedEventArgs<string> e) { Imap client = (Imap)sender; if (e.Error != null) { Console.WriteLine("Error: " + e.Error.ToString()); return; } // Authenticate the user asynchronously. client.AuthenticateAsync("userName", "password"); } void client_AuthenticateCompleted(object sender, AsyncCompletedEventArgs e) { Imap client = (Imap)sender; if (e.Error != null) { Console.WriteLine("Error: " + e.Error.ToString()); return; } // Do something here... StringBuilder sb = new StringBuilder(); FolderCollection list = client.ListFolders(); for (int i = 0; i < list.Count; i++) { sb.AppendFormat("{0} - {1}\r\n", i + 1, list[i].Name); } Console.WriteLine(sb.ToString()); // ... // Disconnect asynchronously. client.DisconnectAsync(); } void client_DisconnectCompleted(object sender, ExtendedAsyncCompletedEventArgs<string> e) { Imap client = (Imap)sender; if (e.Error != null) { Console.WriteLine("Error: " + e.Error.ToString()); } }