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 确实启动并且一切正常并发送电子邮件。
这可能是
一个.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 中为此构建一些解决方法,请告诉我们。