Sends log messages by email using SMTP protocol.
Platforms Supported: All - Requires nuget-package NLog.Targets.Mail since NLog v6, or alternative MailKit
Combines well with FallbackGroup Target in order to create a fallback with multiple SMTP Hosts, example see here.
<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"> <mailheader name="header-name" layout="header-value" /> <!-- repeatable --> </target> </targets>
Read more about using the Configuration File.
header - Header for the message-body. Layout
footer - Footer for the message-body. Layout
layout - Text to be rendered for message-body. Layout Required. Default: ${message}${newline}
.
html - Indicates whether to send message as HTML instead of plain text. Boolean Default: false
addNewLines - Indicates whether to add new lines between log entries. Boolean
replaceNewlineWithBrTagInHtml - Indicates whether NewLine characters in the body should be replaced with <br/>
tags. Boolean Default: false
encoding - Encoding to be used for sending e-mail. Encoding Default: UTF-8
subject - Mail subject. Layout Required. Default: Message from NLog on ${machinename}
to - Recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). Layout. Starting in NLog 4.0 this field is no longer required, but To, BCC or CC should be defined otherwise an exception is thrown.
bcc - BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). Layout
cc - CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). Layout
from - Sender's email address (e.g. joe@domain.com). Layout Required.
body - Same as Layout property. Mail message body (repeated for each log message send in one mail). Layout Default: ${message}${newline}
priority - The mail message priority.
Low
, Normal
, High
.NonUrgent
, Normal
, Urgent
NonUrgent / Low
, Normal
, Urgent / High
for backward compatibilitysmtpUserName - Username used to connect to SMTP server (used when SmtpAuthentication is set to "basic"). Layout
enableSsl - Indicates whether SSL (secure sockets layer) should be used when communicating with SMTP server. Boolean Default: False. Note: port 465 only works with SSL if NLog.MailKit is used. See issue 1226
secureSocketOption - Only in NLog.Mailkit 2.1+. Provides a way of specifying the SSL and/or TLS encryption. Default StartTlsWhenAvailable. Options: None, Auto, SslOnConnect, StartTls & StartTlsWhenAvailable. If enableSsl is set to true
, SslOnConnect will be used
smtpPassword - Password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic"). Layout
smtpAuthentication - SMTP Authentication mode. Default: None
Possible values:
SmtpClient.UseDefaultCredentials = true
)smtpServer - SMTP Server to be used for sending. Layout Required.
smtpPort - Port number that SMTP Server is listening on. Integer Default: 25. Note: port 465 isn't working with SSL. See issue 1226
useSystemNetMailSettings - Force using smtp configuration from system.net/mailSettings. Boolean Default: False
timeout - Indicates the SMTP client timeout in milliseconds. Integer Default: 10000 (10 seconds)
pickupDirectoryLocation - Gets or sets the folder where applications save mail messages to be processed by the local SMTP server (introduced in NLog 4.2).
deliveryMethod - Specifies how outgoing email messages will be handled (introduced in NLog 4.2). Default: Network Possible values:
skipCertificateValidation - Only for NLog.MailKit. Introduced in NLog.MailKit 1.1 - skip SSL certification check
mailheader - Specify one or more email-message-headers (Ex. Message-Id
)
Introduced with NLog v5.1.3 and NLog.MailKit v5.1
The SmtpClient
is not part of .NET Standard 1.x. Also notice that the original SmtpClient of .NET is obsolete in favor of MailKit:
The NLog.MailKit is the Mail target implementation which uses MailKit. Including the NLog.MailKit package will replace the original mail target and has the same options as the original mail target
Install-Package NLog.MailKit
or use
<PackageReference Include="NLog.MailKit" Version="3.0.0" />
And add to your nlog.config:
<nlog> <extensions> <add assembly="NLog.MailKit"/> </extensions> ...
Bug/feature requests for NLog.MailKit please on the NLog.MailKit repo
Application Configuration FileIf the application config file contains mail settings, fx.:
<system.net> <mailSettings> <smtp from="mail@domain.com" deliveryMethod="SpecifiedPickupDirectory"> <network host="localhost" port="25"/> <specifiedPickupDirectory pickupDirectoryLocation="C:/Temp/Email"/> </smtp> </mailSettings> </system.net>
These values will be used, if target doesn't override them (see useSystemNetMailSettings attribute).
It is possible to use an address in format "John Doe <john.doe@example.com>" but the special characters < and > must be escaped. The result would be John Doe <john.doe@example.com>
<target name="MailAWS" xsi:type="Mail" smtpServer="email-smtp.us-east-1.amazonaws.com" smtpPort="587" smtpAuthentication="Basic" smtpUserName="xxxxxxxx" smtpPassword="xxxxxxxxxx" secureSocketOption="StartTls" from="logger@xxxx.xxx" to="xxx@gmail.com" />
Example configuration for a Mailserver Fallback with multiple hosts.
<target xsi:type="FallbackGroup" name="mail" returnToFirstOnSuccess="true"> <target xsi:type="Mail" name="mailserver1" subject="Layout" to="Layout" from="Layout" smtpServer="mx1.example.com" smtpPort="Integer" layout="Layout" /> <target xsi:type="Mail" name="mailserver2" subject="Layout" to="Layout" from="Layout" smtpServer="mx2.example.com" smtpPort="Integer" layout="Layout" /> </target>Mail Target send LogEvent history on error
Example configuration that buffers LogEvents and sends entire batch on error LogEvent:
<target xsi:type="AutoFlushWrapper" name="MailErrorFlush" condition="level >= LogLevel.Error" flushOnConditionOnly="true"> <target xsi:type="BufferingWrapper" name="MailBuffer" bufferSize="50" overflowAction="Discard"> <target xsi:type="Mail" name="MailTarget" /> </target> </target>Using Mail-Target with GMail
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"> <targets> <target name="gmail" xsi:type="Mail" smtpServer="smtp.gmail.com" smtpPort="587" smtpAuthentication="Basic" smtpUserName="user@gmail.com" smtpPassword="password" enableSsl="true" from="emailaddress@gmail.com" to="recipient@example.com" cc="alice@example.com;bob@example.com;charlie@example.com" /> </targets> <rules> <logger name="*" minlevel="Debug" writeTo="gmail" /> </rules> </nlog>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4