【问题标题】:How does SmtpClient determine which mail server to use when localhost is specified?当指定 localhost 时,SmtpClient 如何确定使用哪个邮件服务器?
【发布时间】: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 服务。我忘记了,因为我从不使用它:)

标签: .net smtp


【解决方案1】:

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

有趣的是,在您了解它的内部运作之前,技术看起来是多么神奇:P

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 2018-02-04
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    相关资源
    最近更新 更多