我有一个用C#编写的应用程序,我正在尝试使用Nlog来处理日志记录和电子邮件通知。我的日志记录没有问题,但电子邮件处理似乎有很大的问题。
按照他们在Wiki中的建议,我安装了Nlog Mailkit并根据说明对其进行了配置,添加了目标和规则。这是我的配置文件现在的样子:
<?xml version="1.0" encoding="utf-8" ?>
<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"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
<extensions>
<add assembly="NLog.MailKit"/>
</extensions>
<variable name="myvar" value="myvalue"/>
<targets>
<target
xsi:type="Mail"
name="errMail"
subject="test"
to="me@domain.com"
from="my_acct@gmail.com"
smtpUserName="my_acct@gmail.com"
enableSsl="true"
smtpPassword="pwd"
smtpAuthentication="Basic"
smtpServer="smtp.gmail.com"
smtpPort="587"
/>
</targets>
<rules>
<!-- add your logging rules here -->
<logger name="*" level="Error" writeTo="errMail" />
</rules>
</nlog>
作为一个简单的测试,这是我的c#代码:
namespace ConsoleApp1
{
class Program
{
private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
try
{
Logger.Error("error test");
}
catch (Exception ex)
{
}
}
}
}
当我运行此命令时,似乎什么也没发生……没有电子邮件,也没有。如果将目标与文件交换,则会得到一个日志文件,因此我知道它通常可以工作。
作为另一项测试,我放入了一些简单的代码来直接发送电子邮件:
var fromAddress = new MailAddress("my_acct@gmail.com", "From Name");
var toAddress = new MailAddress("me@domain.com", "To Name");
const string fromPassword = "pwd";
const string subject = "Subject";
const string body = "Body";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
smtp测试工作正常,因此从理论上讲,从我的桌面访问gmail或通过gmail发送电子邮件是没有问题的...。因此,我只能假定在nlog或配置中我一定做错了什么电话...但是我不知道是什么。
我最初试图通过公司的smtp服务器发送邮件,但我认为可能是由于某些访问问题而阻止我这样做,所以我换成gmail认为更简单。
我已经尽力进行所有研究,并且正在就可能出现的问题拔出头发……帮助!
答案 0 :(得分:0)
答案 1 :(得分:0)
我想分享对我有用的配置
1-对于发件人电子邮件,我们必须启用“允许不太安全的应用程序”
这里:https://myaccount.google.com/u/1/lesssecureapps?pli=1&pageId=none
2-在nlog.config中,我们包含了这个目标
<target xsi:type="Mail"
name="test"
header="Hey mouldi"
footer="end mouldi"
layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}"
subject="Error technofix v2"
from="...@gmail.com"
to="...@gmail.com"
smtpUserName="...@gmail.com"
enableSsl="true"
secureSocketOption="SslOnConnect"
smtpPassword="..."
smtpAuthentication="Basic"
smtpServer="smtp.gmail.com"
smtpPort="465"
/>