NLog 邮件目标超时

本文关键字:超时 目标 NLog | 更新日期: 2023-09-27 18:33:27

我正在尝试使用 NLog 的邮件目标通过安全的 (SSL) SMTP 服务器发送电子邮件。 这是我的配置:

<target type="Mail"
        name="MailTarget"
        layout="${message}"
        encoding="UTF-8"
        html="False"
        addNewLines="False"
        subject="hi8766"
        to="ben.g@MyCompany.com"
        from="ben.g@MyCompany.com"
        body="${message}"
        smtpUserName="ben.g"
        enableSsl="True"
        smtpPassword="12345"
        smtpAuthentication="Basic"
        smtpServer="smtp.MyCompany.com"
        smtpPort="465"
        deliveryMethod ="Network"
        pickupDirectoryLocation=""
        timeout="20000"/>

但是当我使用logger.info(message)时没有任何反应。我打开了NLog的内部登录,并在我看到的内部日志上启动了Wireshark:

2016-02-05 10:46:54.3968 Debug Sending mail to ben.g@MyCompany.com using smtp.MyCompany.net.il:465 (ssl=True)
2016-02-05 10:47:14.4526 Error System.Net.Mail.SmtpException: The operation has timed out.
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   at NLog.Internal.MySmtpClient.NLog.Internal.ISmtpClient.Send(MailMessage )
   at NLog.Targets.MailTarget.ProcessSingleMailMessage(List`1 events)

问题是我可以看到 SYN-SYN/ACK-ACK 传输,但随后是 SSL协商不会开始,一切都停止,直到客户端的 FIN。这很奇怪,因为我在同一设置上将网络行为与 Outlook 进行了比较,并且 SSL 确实启动并且一切正常并发送电子邮件。

NLog 邮件目标超时

这可能是

一个.Net错误,描述如下: http://blogs.msdn.com/b/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx

TL;DR:SL + 端口 465(隐式 SSL)在 .NET 中不受支持。您只能使用 SSL + 端口 25(显式 SSL)

现在有一个 GitHub 问题。如果我们可以在 NLog 中为此构建一些解决方法,请告诉我们。