【发布时间】:2010-01-13 22:54:44
【问题描述】:
我正在设置 ELMAH 以发送错误的电子邮件通知,我发现了一些令我惊讶的有趣事情。
在我的 web.config 中,elmah 部分的设置如下:
<elmah>
<errorMail from="sender@example.com"
to="recipient@example.com"
subject="Error Notification"
smtpServer="localhost" />
</elmah>
这在我们的 IIS 服务器上运行良好,并且电子邮件是即时发送的。我假设当我在 Visual Studio 中运行我的应用程序时,ELMAH 不知道如何处理 localhost 服务器,因为 Cassini 没有配置邮件服务器。瞧,我在测试该理论时发现实际上确实发送了错误通知。它需要更长的时间(大约 2 分钟,而在 IIS 服务器上是瞬时的,或者我直接指定邮件服务器)。
如果没有明确指定,SmtpClient.Send() 如何知道要使用哪个邮件服务器?
我对 Reflector 进行了一些研究,我怀疑它可能在 SmtpTransport 中的某个地方(可能是 GetConnection() 方法?)。
【问题讨论】:
-
不是 localhost defined 为 127.0.0.1 (或本地机器)吗?因此,如果我没记错的话,PC 必须启用 SMTP,并且它正在使用它,而不是 Cassini 服务器......
-
你是对的,IIS 安装在本地机器上,带有 SMTP 服务。我忘记了,因为我从不使用它:)