我正在设置ELMAH以发送有关错误的电子邮件通知,我发现了一些令我惊讶的有趣内容。
在我的web.config中,elmah部分设置如下:
<elmah>
<errorMail from="sender@example.com"
to="recipient@example.com"
subject="Error Notification"
smtpServer="localhost" />
</elmah>
这在我们的IIS服务器上工作正常,电子邮件是即时发送的。我假设当我在Visual Studio中运行我的应用程序时,ELMAH不知道如何处理本地主机服务器,因为Cassini没有配置邮件服务器。瞧,我在测试该理论时发现错误通知实际上已经发送了。这需要相当长的时间(大约2分钟,而不是IIS服务器上的瞬时或直接指定邮件服务器)。
如果没有明确指定,SmtpClient.Send()如何知道要使用哪个邮件服务器?
我用Reflector进行了一些挖掘,我怀疑它可能在SmtpTransport中的某个地方(可能是GetConnection()方法?)。
答案 0 :(得分:0)
嗯,答案并不像我想象的那样令人兴奋或有趣。我看到了复杂的邮件服务器检测方法,但事实证明我只运行了一个绑定到本地计算机上的IIS的SMTP服务,这就是为什么localhost在Cassini中用作邮件服务器的原因。
有趣的是,技术看起来很神奇,直到你理解它的内部运作:P