首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SmtpClient.SendAsync代码审查

SmtpClient.SendAsync代码审查
EN

Stack Overflow用户
提问于 2010-04-19 20:28:25
回答 2查看 2.3K关注 0票数 2

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

我已经复制了下面的代码。

代码语言:javascript
复制
{
...
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。我需要在回调处理程序中处理它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-19 20:30:16

这看起来是正确的。

请注意,MailMessage不覆盖ToString,因此您的日志将简单地显示为[MailMessage] Send cancelled

您可能希望改用Subject属性(或其他一些属性)。

票数 1
EN

Stack Overflow用户

发布于 2013-04-12 21:43:47

我想这可能会有帮助

代码语言:javascript
复制
   client.SendCompleted += (s, e) => { client.Dispose(); message.Dispose(); };
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2667336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档