让微软企业库中的Email Trace Listener使用需要身份验证的SMTP服务器

微软企业库中的日志记录模块中有个Email Trace Listener。对于将网站部署到异地的应用来讲,这是一个非常有效的功能。因为我们可以通过电子邮件查看日志,进而了解我们开发的程序错误出现在何处,等等。

通过Reflector查看Email Trace Listener的源码,发现它是采用.NET中内置的SmtpClient发送邮件的。

 

   1: public virtual void SendMessage(MailMessage message)
   2: {
   3:     new SmtpClient(this.configurationData.SmtpServer, this.configurationData.SmtpPort).Send(message);
   4: }

经过查资料,发现SmtpClient默认是通过读取配置文件中的system.net配置节中的mailSettings配置节来发送邮件的。

例如:

   1: <system.net>
   2:   <mailSettings>
   3:     <smtp deliveryMethod="Network" from="[email protected]">
   4:       <network defaultCredentials="false" host="smtp.sina.com" userName="yourusername" password="yourpassword" port="25" />
   5:     </smtp>
   6:   </mailSettings>
   7: </system.net>

这样就可以采用配置节中的身份验证机制连接SMTP服务器了。

当然,这样就将程序发布到服务器上,难免会泄露我们的邮件账户,我们可以用Visual Studio自带的工具aspnet_regiis对该配置节进行加密。

首先,在web.config中添加machineKey配置节,例如:

   1: <machineKey validationKey="AF436A80E46606B98D1F92FB7869D799E63CB1E0FA5E0E9EF8B3CCD0305DBE776ACBC7A7D829768F31427095CF22664CCE15793B492BE1312C1FD2AB9CDE4C45"
   2:   decryptionKey="72204A02EDFEC87293D0D54F1C5C71322F5188B96FAA446F" validation="SHA1" />

可以用这个网站生成machineKey配置。

然后,打开Visual Studio的控制台,输入aspnet_iis可以看到具体的帮助。

关于受保护的配置节有关的消息,可在msdn中查阅到更具体的信息,这里给出一个连接演练:使用受保护的配置节

你可能感兴趣的:(listener)