有什么方法可以在NLog邮件目标中使用来自system.net/mailSettings/smtp的'from'地址?

时间:2016-04-01 08:09:01

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

我想通过NLog邮件目标发送一些致命错误的电子邮件。 我还在web.config中配置了 system.net/mailSettings/smtp

当我设置useSystemNetMailSettings="true"时,NLog使用来自system.net/mailSettings/smtp的所有内容,除了'from'地址。所以我需要再次指定它,特别是对于邮件目标。

我做了什么?我刚刚创建了一个变量“MailFrom”,并在应用程序启动时以编程方式初始化它。

<nlog>
    <variable name="MailFrom" value=""/>
    <targets>
        <target name="mail" type="Mail" from="${var:MailFrom}" html="false" subject="Subject" to="ToList" useSystemNetMailSettings="true"/>
    </targets>
</nlog>
var section = ConfigurationManager.GetSection("system.net/mailSettings/smtp") as SmtpSection;
if (section != null)
    LogManager.Configuration.Variables["MailFrom"] = section.From;

也许你知道一些更好的方法吗?感谢。

1 个答案:

答案 0 :(得分:0)

此选项已添加到NLog 4.3.2。

PS:更漂亮的方法是使用FindTargetByName

 var section = ConfigurationManager.GetSection("system.net/mailSettings/smtp") as SmtpSection;
 if (section != null)
 {

     var mailtarget = LogManager.Configuration.FindTargetByName<MailTarget>("mail");
     if (mailtarget != null)
         mailtarget.From = section.From;
 }