Occurs when the IMAP4 server accepts the connection attempt and opens the transmission channel between the remote host (IMAP4 server) and the client (MailBee).
The event handler receives an argument of type SocketConnectedEventArgs containing data related to this event. The following SocketConnectedEventArgs properties provide information specific to this event.
| Property | Description |
|---|---|
| Protocol | Gets application-level protocol of the established connection. |
| RemoteEndPoint | Gets a reference to the end point of the remote host to which the connection was just established. |
| RemoteHostName | Gets the name of the remote host to which the connection was just established. |
| State | Gets a reference to the object which was supplied by the developer in state parameter of asynchronous methods of the mailer components. |
This event is raised immediately after Socket successfully connected to the IMAP4 server host. After the socket itself has been connected and this event raised, the client needs to receive some data from the server in order to complete the procedure of establishing connection with the IMAP4 server. If the connection must be SSL-encrypted, a few additional round-trips to the server required in order to completely establish the connection. Then, once the connection is fully initialized and ready for sending IMAP4 commands to the server, Connected event is raised.
This sample demonstrates the order in which events are raised during Connect method call. The events used in this sample occur in the following order:
Once Connect method finishes, all event handlers are removed in the code, thus Disconnect method does not generate any events (but it would do if we didn't remove LowLevelDataReceived and DataReceived handlers).
DataSent and LowLevelDataSent events are not used in this sample because Connect method does not send any data to the server. However, it would be different if SSL-encrypted connection was used.
[C#] using System; using MailBee; using MailBee.ImapMail; class Sample { // HostResolved event handler. private static void OnHostResolved(object sender, HostResolvedEventArgs e) { Console.WriteLine("The host name of the server was resolved into IP address."); } // SocketConnected event handler. private static void OnSocketConnected(object sender, SocketConnectedEventArgs e) { Console.WriteLine("The server accepted the connection."); } // LowLevelDataReceived event handler. private static void OnLowLevelDataReceived(object sender, DataTransferEventArgs e) { // Since SSL connection is not used, OnDataReceived and OnLowLevelDataReceived // routines will produce the same output. This sample handles both events just // to demonstrate that LowLevelDataReceived event is raised before the // corresponding DataReceived event. // But in SSL case, DataReceived and LowLevelDataReceived event data would be // completely different, and some LowLevelDataReceived events (such as ones // occurred during the SSL handshake) would not be followed by DataReceived // events at all, because the data sent or received during the SSL handshake // does not relate to POP3 protocol and cannot be decoded into textual form. Console.WriteLine("Low level data received: [" + System.Text.Encoding.Default.GetString(e.Data) + "]"); } // DataReceived event handler. private static void OnDataReceived(object sender, DataTransferEventArgs e) { Console.WriteLine("Data received: [" + System.Text.Encoding.Default.GetString(e.Data) + "]"); } // Connected event handler. private static void OnConnected(object sender, ConnectedEventArgs e) { Console.WriteLine("Successfully connected to the server."); } // The actual code. static void Main(string[] args) { Imap imp = new Imap(); // Subscribe to the events. imp.HostResolved += new HostResolvedEventHandler(OnHostResolved); imp.SocketConnected += new SocketConnectedEventHandler(OnSocketConnected); imp.LowLevelDataReceived += new DataTransferEventHandler(OnLowLevelDataReceived); imp.DataReceived += new DataTransferEventHandler(OnDataReceived); imp.Connected += new ConnectedEventHandler(OnConnected); // Connect to the server and make the events get raised. imp.Connect("mail.company.com"); // Unsubscribe from the events. imp.HostResolved -= new HostResolvedEventHandler(OnHostResolved); imp.SocketConnected -= new SocketConnectedEventHandler(OnSocketConnected); imp.LowLevelDataReceived -= new DataTransferEventHandler(OnLowLevelDataReceived); imp.DataReceived -= new DataTransferEventHandler(OnDataReceived); imp.Connected -= new ConnectedEventHandler(OnConnected); imp.Disconnect(); } }
[Visual Basic] Imports System Imports MailBee Imports MailBee.ImapMail Module Sample ' HostResolved event handler. Private Sub OnHostResolved(ByVal sender As Object, ByVal e As HostResolvedEventArgs) Console.WriteLine("The host name of the server was resolved into IP address.") End Sub ' SocketConnected event handler. Private Sub OnSocketConnected(ByVal sender As Object, ByVal e As SocketConnectedEventArgs) Console.WriteLine("The server accepted the connection.") End Sub ' LowLevelDataReceived event handler. Private Sub OnLowLevelDataReceived(ByVal sender As Object, ByVal e As DataTransferEventArgs) ' Since SSL connection is not used, OnDataReceived and OnLowLevelDataReceived ' routines will produce the same output. This sample handles both events just ' to demonstrate that LowLevelDataReceived event is raised before the ' corresponding DataReceived event. ' But in SSL case, DataReceived and LowLevelDataReceived event data would be ' completely different, and some LowLevelDataReceived events (such as ones ' occurred during the SSL handshake) would not be followed by DataReceived ' events at all, because the data sent or received during the SSL handshake ' does not relate to POP3 protocol and cannot be decoded into textual form. Console.WriteLine("Low level data received: [" & System.Text.Encoding.Default.GetString(e.Data) & "]") End Sub ' DataReceived event handler. Private Sub OnDataReceived(ByVal sender As Object, ByVal e As DataTransferEventArgs) Console.WriteLine("Data received: [" & System.Text.Encoding.Default.GetString(e.Data) & "]") End Sub ' Connected event handler. Private Sub OnConnected(ByVal sender As Object, ByVal e As ConnectedEventArgs) Console.WriteLine("Successfully connected to the server.") End Sub ' The actual code. Sub Main(ByVal args As String()) Dim imp As New Imap ' Subscribe to the events. AddHandler imp.HostResolved, AddressOf OnHostResolved AddHandler imp.SocketConnected, AddressOf OnSocketConnected AddHandler imp.LowLevelDataReceived, AddressOf OnLowLevelDataReceived AddHandler imp.DataReceived, AddressOf OnDataReceived AddHandler imp.Connected, AddressOf OnConnected ' Connect to the server and make the events get raised. imp.Connect("mail.company.com") ' Unsubscribe from the events. RemoveHandler imp.HostResolved, AddressOf OnHostResolved RemoveHandler imp.SocketConnected, AddressOf OnSocketConnected RemoveHandler imp.LowLevelDataReceived, AddressOf OnLowLevelDataReceived RemoveHandler imp.DataReceived, AddressOf OnDataReceived RemoveHandler imp.Connected, AddressOf OnConnected imp.Disconnect() End Sub End Module
Imap Class | MailBee.ImapMail Namespace | Connected