SmtpClient如何确定在指定localhost时使用哪个邮件服务器?

时间:2010-01-13 22:54:44

标签: .net smtp

我正在设置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()方法?)。

1 个答案:

答案 0 :(得分:0)

嗯,答案并不像我想象的那样令人兴奋或有趣。我看到了复杂的邮件服务器检测方法,但事实证明我只运行了一个绑定到本地计算机上的IIS的SMTP服务,这就是为什么localhost在Cassini中用作邮件服务器的原因。

有趣的是,技术看起来很神奇,直到你理解它的内部运作:P