0

我将我的 Web 应用程序部署到我们的生产 IIS 6.0 服务器,并且一切正常,除非我的代码尝试将电子邮件发送到不在我们的电子邮件服务器域中的地址。我见过各种症状,但这似乎是最直接的描述:

参数或参数中的语法错误。服务器响应为:5.7.1 此系统未配置为中继邮件

我的网络应用程序收到此错误消息使用 System.Net.Mail。它与应该替换的使用 System.Web.Mail 的旧 Web 应用程序一起存在。同一台机器上有一个 SMTP 服务器,似乎需要一些关于中继的新配置。

检查 SMTP 服务器属性显示没有为“中继限制”配置任何内容。旧的生产 Web 应用程序使用如上所述配置的 SMTP 服务器发送电子邮件而不会出错。

所以,总而言之,使用 System.Net.Mail 是否需要与 System.Web.Mail 不同的东西来中继电子邮件?

具有中继问题的较新版本的 web.config 包含:

<system.net><mailSettings><smtp><network host="mail.cbmiweb.com" port="25"/></smtp>

我在所有测试中都使用了上面的值(首先在我的本地主机上使用 XP IIS 5.1;然后在我们 LAN 中的暂存 IIS 6.0 服务器上)并且从未遇到任何“中继”问题。

使用 System.Web.Mail 的旧版本的 web.config 不包含任何与 SMTP 相关的内容!

如果我突然需要在上面的 smtp 设置中添加用户名密码,为什么我在开发过程中从来不需要“凭据”?

我对 SMTP 了解不多,甚至不知道该向邮件服务器管理员询问什么。我很困惑该怎么做...谢谢。

4

1 回答 1

1

在我看来,旧应用程序正在将消息直接发送到收件人服务器,并且完全绕过了您的本地邮件服务器。之所以会发生这种情况,是因为您的应用程序没有配置要使用的邮件服务器,因此它默认返回尝试发送邮件本身。

这通常是一个坏主意,因为它可能会导致您的应用程序延迟,具体取决于收件人邮件服务器配置(我们在这里讨论几秒钟)。此外,如果您没有配置为处理灰名单等问题,那么您可能会收到大量您认为已发送但从未真正到达的电子邮件。

您应该要求邮件服务器管理员正确配置您的本地邮件服务器以允许从您的机器进行中继。

或(这是更安全的方式)

您应该在本地邮件服务器上设置一个用户,并让您的应用在尝试发送电子邮件时使用这些登录凭据。

systemnetmail.com站点可能会有所帮助特别是关于smtp 配置的页面。

于 2010-07-13T22:22:27.373 回答