⽇志框架NLog之将⽇志发送到邮件
背景
NLog可以将⽇志输出到不同的媒介上,邮件是其中⼀个,通过邮件可以让我们第⼀时间收到信息。使⽤SMTP协议通过电⼦邮件发送⽇志消息。与FallbackGroup Target很好地结合在⼀起,以创建具有多个SMTP主机的后备。
配置语法
<targets>
<target xsi:type="Mail"
name="String"
header="Layout"
footer="Layout"
layout="Layout"
html="Boolean"
addNewLines="Boolean"
replaceNewlineWithBrTagInHtml="Boolean"
encoding="Encoding"
subject="Layout"
to="Layout"
bcc="Layout"
cc="Layout"
from="Layout"
body="Layout"
smtpUserName="Layout"
enableSsl="Boolean"
secureSocketOption="None|Auto|SslOnConnect|StartTls|StartTlsWhenAvailable"*
smtpPassword="Layout"
smtpAuthentication="Enum"
smtpServer="Layout"
smtpPort="Integer"
useSystemNetMailSettings="Boolean"
deliveryMethod="Enum"
pickupDirectoryLocation="String"
timeout="Integer"
skipCertificateValidation="Boolean"
priority="Layout"
/>
</targets>
参数
常规选项
名称-⽬标名称。
布局选项
标头-标头。布局
页脚-页脚。布局
布局-要渲染的⽂本。需要布局。默认值:${message}${newline}。与⾝体属性相同
html-指⽰是否以HTML⽽不是纯⽂本形式发送消息。布尔默认值:false
addNewLines-指⽰是否在⽇志条⽬之间添加新⾏。布尔型
replaceNewlineWithBrTagInHtml -指⽰是否在⾝体换⾏字符应改为<br/>标签。布尔默认值:false
编码-⽤于发送电⼦邮件的编码。编码默认值:UTF-8讯息选项
主题-邮件主题。需要布局。默认值:来⾃$ {machinename}上NLog的消息
到-收件⼈的电⼦邮件地址,⽤分号分隔(例如john@domain;jane@domain)。布局。从NLog 4.0开始,不再需要此字段,但应定义To,BCC或CC,否则将引发异常。
密件抄送-⽤分号分隔的密件抄送电⼦邮件地址(例如john@domain;jane@domain)。布局
cc-⽤分号分隔的CC电⼦邮件地址(例如john@domain;jane@domain)。布局
来⾃-发件⼈的电⼦邮件地址(例如joe@domain)。需要布局。
体-同布局属性。邮件消息正⽂(对于⼀封邮件中发送的每条⽇志消息重复)。布局默认值:${message}${newline}
优先级-邮件优先级。
当使⽤不带NLog.MailKit软件包的NLog时,请使⽤System.Net.Mail.MailPriority。Low,Normal,High。
使⽤版本最⾼为v3.1的Nlog + NLog.MailKit版本时,有效值为MimeKit.MessagePriority。NonUrgent,Normal,Urgent
NLog.MailKit V3.2和上述接受NonUrgent / Low,Normal,Urgent / High为了向后兼容MTP选项
smtpUserName-⽤于连接到SMTP服务器的⽤户名(在SmtpAuthentication设置为“基本”时使⽤)。布局
enableSsl-指⽰在与SMTP服务器通信时是否应使⽤SSL(安全套接字层)。布尔值默认值:False。注意:端⼝465不适⽤于SSL。见问题1226
secureSocketOption-仅在NLog.Mailkit 2.1+中。提供⼀种指定SSL和/或TLS加密的⽅式。默认为StartTlsWhenAvailable。选项:⽆,⾃动,SslOnConnect,StartTls和StartTlsWhenAvailable。如果enableSsl设置为true,将使⽤SslOnConnect
smtpPassword-⽤于针对SMTP服务器进⾏⾝份验证的密码(在SmtpAuthentication设置为“基本”时使⽤)。布局
smtpAuthentication -SMTP⾝份验证模式。默认值:⽆
可能的值:
基本-基本-⽤户名和密码。
⽆-⽆⾝份验证。
Ntlm -NTLM⾝份验证。
smtpServer-⽤于发送的SMTP服务器。需要布局。
smtpPort -SMTP服务器正在侦听的端⼝号。整数缺省值:25。注意:端⼝465不⽀持SSL。见问题1226
useSystemNetMailSettings-从system/mailSettings强制使⽤smtp配置。布尔默认值:False
超时-表⽰SMTP客户端超时(以毫秒为单位)。整数默认值:10000(10秒)
PickupDirectoryLocation-获取或设置应⽤程序⽤来保存要由本地SMTP服务器处理的邮件的⽂件夹(在NLog 4.2中引⼊)。
deliveryMethod-指定将如何处理传出电⼦邮件(在NLog 4.2中引⼊)。默认值:⽹络可能的值:
⽹络-电⼦邮件通过⽹络发送到SMTP服务器。
PickupDirectoryFromIis-电⼦邮件被复制到本地Internet信息服务(IIS)使⽤的提取⽬录中以进⾏传递。
SpecifiedPickupDirectory-将电⼦邮件复制到PickupDirectoryLocation属性指定的⽬录中,以供外部应⽤程序传递。skipCertificateValidation-仅适⽤于NLog.MailKit。在NLog.MailKit 1.1中引⼊-跳过SSL认证检查
实现⽅式
1、vs添加引⽤NLog.MailKit
<PackageReference Include="NLog.MailKit" Version="3.0.0" />
2、配置nlog
<nlog>
<extensions>
<add assembly="NLog.MailKit"/>
</extensions>
...
3、config配置邮箱信息
<system>
<mailSettings>
<smtp from="mail@domain" deliveryMethod="SpecifiedPickupDirectory">      <network host="localhost" port="25"/>
<specifiedPickupDirectory pickupDirectoryLocation="C:/Temp/Email"/>
</smtp>
</mailSettings>
</system>
4、配置⽇志参数
validation框架<target xsi:type="FallbackGroup"
name="mail"
returnToFirstOnSuccess="true">
<target xsi:type="Mail"
name="mailserver1"
subject="Layout"
to="Layout"
from="Layout"
smtpServer="ample"
smtpPort="Integer"
layout="Layout" />
<target xsi:type="Mail"
name="mailserver2"
subject="Layout"
to="Layout"
from="Layout"
smtpServer="ample"
smtpPort="Integer"
layout="Layout" />
</target>
最后就可以收到⽇志邮件啦。
参考地址

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。