我想通过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;
也许你知道一些更好的方法吗?感谢。
答案 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;
}