在使用SendAsync
時,處置SmtpClient
和MailMessage
的正確方法是什麼?SmtpClient.SendAsync代碼審查
我已經在下面複製了我的代碼。
{
...
var client = new SmtpClient {Host = _smtpServer};
client.SendCompleted += SendCompletedCallback;
var userState = mailMessage;
client.SendAsync(mailMessage, userState);
...
}
private static void SendCompletedCallback(object sender,
AsyncCompletedEventArgs e)
{
// Get the unique identifier for this asynchronous operation.
var mailMessage= (MailMessage)e.UserState;
if (e.Cancelled)
{
Log.Info(String.Format("[{0}] Send canceled.", mailMessage));
}
if (e.Error != null)
{
Log.Error(String.Format("[{0}] {1}", mailMessage, e.Error));
}
else
{
Log.Info("Message sent.");
}
mailMessage.Dispose();
}
處置的MailMessage
的client.SendAsync(...)
後拋出異常。我需要將它置於回調處理程序中。
我從MSDN http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx哪裏誤導,因爲這個例子中的他們在主函數中處理mailMessage,而不是在回調中。 – 2010-04-19 12:32:43
@Lieven Cardoen,原因是,該示例使用控制檯並等待用戶輸入 – Fredou 2010-04-19 12:35:22
好了,thx爲ToString註釋。 – 2010-04-19 12:35:38