微软企业库中的日志记录模块中有个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="satan_1st.student@sina.com">
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中查阅到更具体的信息,这里给出一个连接演练:使用受保护的配置节