c# - SmtpClient.SendAsync 代码审查

标签 c# .net smtpclient mailmessage

使用 SendAsync 时处理 SmtpClientMailMessage 的正确方法是什么?

我已复制下面的代码。

{
...
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();
}

client.SendAsync(...) 引发异常后处理 MailMessage。我需要在回调处理程序中处理它。

最佳答案

我认为这会有所帮助

   client.SendCompleted += (s, e) => { client.Dispose(); message.Dispose(); };

关于c# - SmtpClient.SendAsync 代码审查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2667336/

相关文章:

c# - 使用 C# 检索 MongoDB 文档并选择一个字段

.net - 是否有用于 Windows/C# 开发的嵌入式 Webkit 组件?

c# - SMTP 服务器需要安全连接或客户端未通过身份验证 - 仍无法正常工作

.net - 雅虎从 smtpclient .net 发送时禁用链接

时间:2019-03-17 标签:c#.net 3.5System.Net.Mail

c# - MouseEnter 事件的奇怪行为

c# - 如何在不加载文件扩展名的情况下将文件名作为列表框项目加载到列表框中?

c# - 如何使用 XDocument 获取值(value)

.net - .NET 数组的最大大小

.net - 为什么 String 类不在可移植库中实现 IEnumerable<char> ?