【问题标题】:MailKit: What is the best practice of using Client.Disconnect(...)MailKit:使用 Client.Disconnect(...) 的最佳实践是什么
【发布时间】:2019-01-08 23:28:10
【问题描述】:

我最近在我们的项目中使用了 Mailkit 库来替换 .NET SmtpClient。 我们有 2 个使用 SmtpClient 发送电子邮件的业务案例。 在一个实例中,我们使用 SmtpClient 在单独的进程中发送排队的电子邮件,而在其他实例中,我们立即发送电子邮件。 在实现时我注意到我们必须调用 Client 实例的 Disconnect 方法。 mailClient.Disconnect(...); 在文档中不确定并且不清楚调用此方法的最佳方法是什么。 所以我的问题是,使用这种方法的最佳实践是什么? 每条消息都调用 mailClient.Disconnect(true) 还是 mailClient.Disconnect(false)?

出于兴趣,如果我在 using 块中使用客户端,是否需要在发送消息后显式调用 Disconnect(...)?我认为它会在 Dispose() 执行时隐式调用断开连接。 using (var mailClient = new SmtpClient()) { mailClient.Connect(...); mailClient.AuthenticationMechanisms.Remove("XOAUTH2"); mailClient.Authenticate(...); mailClient.Send(message); mailClient.Disconnect(false); }

感谢您在这方面的反馈。

【问题讨论】:

    标签: mailkit


    【解决方案1】:

    Dispose() 方法只会在套接字连接仍然处于活动状态时关闭它(这实际上与调用 Disconnect (false) 相同)。

    不过,调用Disconnect (true) 会更有礼貌,因为它会向服务器发送适当的LOGOUTQUIT 命令,从而允许服务器正确处置其资源。

    【讨论】:

      猜你喜欢
      • 2018-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多