如何使用NLog发送电子邮件?

时间:2017-08-14 14:43:46

标签: c# logging model-view-controller nlog

我正在使用NLog,而且我在记录方面非常陌生。我创建了日志文件,但不知怎的,我有问题发送电子邮件。我遵循了所有指示,但无法做到。

web.config中配置标记中的邮件设置:

<system.net>
<mailSettings>
  <smtp deliveryMethod="SpecifiedPickupDirectory" from="some@some.org">
    <network host="localhost"/>
    <specifiedPickupDirectory pickupDirectoryLocation="d:\tmp\email"/>
  </smtp>

</mailSettings>
</system.net>

这是nlog.config中的目标:

    <target name="Mail" xsi:type="Mail" html="true" subject="Error Received" 
 body="${message}"
 to="some1@some.com"
 from="some@gmail.com"
 encoding="UTF-8"
 smtpUserName="some@some.com"
 enableSsl="false"
 smtpPassword="password"
 smtpAuthentication="Basic"
 smtpServer="smtp.some.com"
 smtpPort="25" />

我使用的规则:

       <logger name="*" minlevel="Error" writeTo="Mail" />

我打电话给记录器:

     Logger logger = LogManager.GetCurrentClassLogger();
     try{ //something }
     catch(Exception ex){  logger.Error(ex);  }

而且我对设置和配置的位置感到很困惑。谢谢。

1 个答案:

答案 0 :(得分:2)

正文是一种布局格式,不确定它是否会处理$ {message}标记。将$ {message]更改为nlog.config中的布局名称,或将其保留为$ {message} $ {newline}默认值。

您可以启用Internal Debugging

将顶级XML父级更改为

<nlog internalLogFile="c:\log.txt" internalLogLevel="Trace">

这可能会让您对此问题有所了解。可能是服务器的身份验证问题或其他问题。

由于您在目标中指定了所有服务器信息,因此不需要web.config设置。

不确定它是否已修复,但您应该向目标添加超时=“10000”,以便关闭连接。

在GMail的NLog Wiki中有一个非常好的例子可以使用