NLog邮件目标超时

时间:2016-02-05 15:55:59

标签: c# logging nlog system.net.mail

我试图使用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确实启动,一切正常,电子邮件也被发送。

1 个答案:

答案 0 :(得分:0)

这可能是.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:.Net中不支持SSL +端口465(隐式SSL)。您只能使用SSL +端口25(显式SSL)

现在有一个GitHub issue for this。如果我们可以在NLog中为此建立一些变通方法,请告诉我们。