邮箱不可用。服务器响应是:5.7.1 无法中继到 abc@xyz.com。

85
我尝试使用ASP.NET发送邮件时,收到了“邮箱不可用。服务器响应为:5.7.1无法中继至abc@xyz.com”的提示。该网站部署在IIS7、Windows 2008服务器上。 该网站在IIS6和Windows 2003 Server上运作正常。但当我将其部署在IIS7、2008上时,就会出现此错误。
有人曾经遇到过这种情况吗?

Stack Overflow是一个面向编程和开发问题的网站。可以使用Stack Exchange网络上的其他网站。 - jww
8个回答

117

啊,我明白了...我弄好了 :)

谢谢Christopher,你的建议是正确的。

但是,找到“默认SMTP虚拟服务器”有一些棘手;)

即使您使用IIS7部署网站,在配置SMTP服务器时也必须打开IIS6管理器(为什么?)。

我按照以下方式配置SMTP服务器以使其正常工作:

  1. 使用控制面板->管理工具打开IIS6管理器。
  2. 打开SMTP虚拟服务器属性。
  3. 在常规选项卡中,将Web服务器的IP地址设置为“全部未分配”的代替。
  4. 在访问选项卡上,单击中继按钮,这将打开中继限制对话框。
  5. 在中继计算机列表中添加回环IP地址127.0.0.1和Web服务器的IP地址,以便它们可以通过SMTP服务器传递/中继电子邮件。

3
需要在 IIS 6 中进行管理的原因是,IIS 7.X 没有自己的 SMTP 服务器组件,所以它使用 IIS 6。 - MemeDeveloper
5
在我的web.config文件中,我使用“localhost”作为我的smtp服务器的名称。如果我按照第三步进行操作,这个解决方案就会失败;如果我省略第三步,它就能正常工作。谢谢 :) - Paul Suart
1
这同样适用于IIS8和Server 2012。 - Isaac Bolinger
我们正在使用继电器通过Office 365中的帐户发送电子邮件。即使我们没有使用Web服务器的SMTP服务器,我是否仍然需要在IIS 6中安装SMTP服务器?这是在运行IIS 10的Windows Server 2016上。有人对此问题有任何建议或解决方案吗?提前感谢您! - Nathan
非常感谢!解决了我的问题。 - Nanou Ponette

20

答案就在这里...... IIS设置

IIS-->默认SMTP虚拟服务器-->属性-->访问-->中继限制 只需添加或排除您关心的IP,即可解决问题。


2
“Default SMTP Virtual Server”在哪里?我正在使用IIS7。在IIS6中有“SMTP虚拟服务器”,但在IIS7中没有? - Vinod T. Patil

19

我遇到了相同的问题,并按照维诺德(Vinod)回复中非常清晰地列出的步骤操作,但这导致出现了不同的错误:

无法从传输连接读取数据:net_io_connectionclosed

我进行了更深入的挖掘和搜索,经过一番尝试(虽然我不确定为什么有效),我通过以下方式解决了该问题:
- 返回到IIS6.0管理控制台
- 打开SMTP虚拟服务器属性
- 在常规选项卡上,将“IP地址:”设置改回“(全部未分配)”

不确定为什么会起作用,但希望能帮助未来遇到同样问题的人。


15
作为一幅图像胜过千言万语的说法..
当你找到IIS6管理器时(我发现搜索IIS可能会返回2个结果),转到SMTP服务器属性,然后转到“Access”,然后按下中继按钮。
然后你可以选择全部或只允许特定IP地址,如127.0.0.1。 SMTP Relay

5

感谢Vinod提供如此清晰的答案。

当我按照上述步骤操作时,遇到了与Mick Byrne相同的错误。将其转回All Unassigned可以解决问题,但我还需要做一些其他调整:

  • 将运行我的网站的用户添加到SMTP虚拟服务器安全选项卡中的用户中。
  • 在我的web.config文件中更改mailSettings > network > host属性的值为特定的服务器IP(例如192.168.100.120),而不是本地主机(它在hosts文件中指向127.0.0.1)。

希望这能让其他人少费点时间。


4
我能通过更改web.config文件中system.net部分的邮件设置来解决此问题:
<mailSettings>
    <smtp deliveryMethod="Network">
        <network host="yourserver" defaultCredentials="true"/>
    </smtp>
</mailSettings>

2

如果您使用的是Exchange 2010:

(在我的情况下,错误消息中不包含“ for abc@xyz.com”)

以下演示如何添加接收连接器:http://exchangeserverpro.com/how-to-configure-a-relay-connector-for-exchange-server-2010/

但我还需要执行此处找到的步骤:http://recover-email.blogspot.com.au/2013/12/how-to-solve-exchange-smtp-server-error.html

  • 转到Exchange Management Shell并运行命令
  • Get-ReceiveConnector "JiraTest"|Add-ADPermission -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "ms-Exch-SMTP-Accept-Any-Recipient"

在进行这项工作时,我在受影响服务器的 PowerShell 控制台上运行了以下命令,直到错误消失:

Send-MailMessage -From "myemail@server.com.au" -To "myemail@server.com.au" -Subject "Test Email" -Body "This is a test"

1

我想分享一下在我的情况下导致错误的原因。花了几个小时才弄清楚,希望能帮助节省别人的时间。

奇怪的是,在启用域名的“启用放置目录配额”设置时引发了错误。

enter image description here

我不是专家,也不知道技术解释,但是取消勾选提到的设置解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接