有人知道如何在localhost上运行MVC3应用程序上的测试时禁用NLog应用程序发送电子邮件吗?我希望NLog只在应用程序在部署到Web服务器时出错时才发送电子邮件。为了实现这一目标,我必须写些什么?
由于
答案 0 :(得分:1)
您可以尝试通过更改邮件设置来“禁用”邮件发送:
<system.net>
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="c:\whateverfolder"/>
</smtp>
</mailSettings>
</system.net>
这将删除计算机上某个文件夹中的电子邮件。这并没有真正阻止邮件,但它阻止了它们被发送。
如果您正在运行手动或自动测试,还可以更轻松地验证电子邮件是否已“发送”。
答案 1 :(得分:1)
您可以使用filters。如果服务器名称是localhost,则可以使用when-filter来过滤邮件目标的邮件。这假设您使用localhost请求站点。但是,您可以使用任何Layout renderer作为条件。
请参阅下面的示例配置,这对我有用。
<?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">
<targets>
<target xsi:type="Mail" name="m" layout="${message}" subject="Log"
to="mail@domain.com" from="app@domain.com" body="${message}"
smtpServer="localhost">
</target>
</targets>
<rules>
<logger name="*" minlevel="Fatal" writeTo="m" >
<filters>
<when condition="equals('${aspnet-request:serverVariable=SERVER_NAME}','localhost')" action="Ignore" />
</filters>
</logger>
</rules>
</nlog>