System.Net.Mail的SMTP中继要求是否与System.Web.Mail不同

时间:2010-07-13 22:17:11

标签: smtp smtpclient system.net.mail system.web.mail

我将我的网络应用程序部署到我们的生产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;然后在我们局域网中的暂存IIS 6.0服务器上)并且从未出现任何“中继”问题。

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

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

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

1 个答案:

答案 0 :(得分:1)

听起来像旧应用程序正在将邮件直接发送到收件人服务器并完全绕过本地邮件服务器。这可能是因为您的应用程序没有配置的邮件服务器,所以它默认返回尝试发送邮件本身。

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

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

OR(这是更安全的方式)

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

systemnetmail.com网站可能会有所帮助。特别是smtp configuration上的页面。