Sends a QUIT message to the SMTP server, gracefully ends the TCP connection, releases all resources used by the current instance of the System.Net.Mail.SmtpClient class, and optionally disposes of the managed resources.
The connection established by the current instance of the System.Net.Mail.SmtpClient class to the SMTP server may be re-used if an application wishes to send multiple messages to the same SMTP server. This is particularly useful when authentication or encryption are used establish a connection to the SMTP server. The process of authenticating and establishing a TLS session can be expensive operations. A requirement to re-establish a connection for each message when sending a large quantity of email to the same SMTP server could have a significant impact on performance. There are a number of high-volume email applications that send email status updates, newsletter distributions, or email alerts. Also many email client applications support an off-line mode where users can compose many email messages that are sent later when a connection to the SMTP server is established. It is typical for an email client to send all SMTP messages to a specific SMTP server (provided by the Internet service provider) that then forwards this email to other SMTP servers.
The System.Net.Mail.SmtpClient class implementation pools SMTP connections so that it can avoid the overhead of re-establishing a connection for every message to the same server. An application may re-use the same System.Net.Mail.SmtpClient object to send many different emails to the same SMTP server and to many different SMTP servers. As a result, there is no way to determine when an application is finished using the System.Net.Mail.SmtpClient object and it should be cleaned up.
When an SMTP session is finished and the client wishes to terminate the connection, it must send a QUIT message to the server to indicate that it has no more messages to send. This allows the server to free up resources associated with the connection from the client and process the messages which were sent by the client.
Calling the SmtpClient.Dispose(bool) method on a System.Net.Mail.SmtpClient object that is executing an asynchronous erload:System.Net.Mail.SmtpClient.SendAsync operation will cancel the send operation as though the SmtpClient.SendAsyncCancel method had been called.
The System.Net.Mail.SmtpClient class has no Finalize method. So an application must call erload:System.Net.Mail.SmtpClient.Dispose to explicitly free up resources.
The SmtpClient.Dispose(bool) method iterates through all established connections to the SMTP server specified in the SmtpClient.Host property and sends a QUIT message followed by gracefully ending the TCP connection. The SmtpClient.Dispose(bool) method also releases the unmanaged resources used by the System.Net.Sockets.Socket and optionally disposes of the managed resources.
Call erload:System.Net.Mail.SmtpClient.Dispose when you are finished using the System.Net.Mail.SmtpClient. The erload:System.Net.Mail.SmtpClient.Dispose method leaves the System.Net.Mail.SmtpClient in an unusable state. After calling erload:System.Net.Mail.SmtpClient.Dispose, you must release all references to the System.Net.Mail.SmtpClient so the garbage collector can reclaim the memory that the System.Net.Mail.SmtpClient was occupying.
For more information, see Cleaning Up Unmanaged Resources and Implementing a Dispose Method.
Always call erload:System.Net.Mail.SmtpClient.Dispose before you release your last reference to the System.Net.Mail.SmtpClient. Otherwise, the resources it is using will not be freed so the garbage collector can reclaim the memory.