处理MailMessage

时间:2018-01-15 11:35:07

标签: c# .net email

我应该手动处理System.Net.Mail.MailMessage吗?

MailMessage实现IDisposable所以我假设我应该处理它,但我找不到任何有人实际处理它的例子。

这样做是否正确?:

public void Send(MailMessage message)
{
    using(var smtpClient = new SmtpClient(_host))
    {
       smtpClient.Send(message);
       message.Dispose();
    }
}

这似乎有点不对,因为我明确使用message.Dispose

1 个答案:

答案 0 :(得分:2)

仅仅因为其他人不这样做并不能使其不妥善处理。由于它实现了IDisposable,它可能会使用非托管资源,所以当你完成它时就把它丢弃。

using(var message = new MailMessage(pass arguments ...))
using(var smtpClient = new SmtpClient(_host))
{
   smtpClient.Send(message);
}

source表明实际上有一些托管和非托管的东西需要处理。

  

这似乎有点不对,因为我明确地使用了   message.Dispose

是的,我同意,如果您不控制实例(在不受您控制或甚至不可见的代码中创建和使用),则调用message.Dispose()似乎是错误的。因为那时你可能会在必须使用它时处理它,这可能是一个错误。