我遇到这个问题:

PHP Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable to relay for chris.mahan@gmail.com in c:\inetpub\wwwroot\mailtest.php on line 12 

从这个脚本:

<?php
$to = "chris.mahan@gmail.com";
$subject = "test";
$body = "this is a test";

if (mail($to, $subject, $body)){
    echo "mail sent";
}
else {
    echo "problem";
}
?>

服务器上 php.ini 的部分:

[mail function]
; For Win32 only.
SMTP = server.domain.com; for Win32 only
smtp_port = 25

; For Win32 only.
sendmail_from = support@domain.com
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =

(注意,“服务器”和“域”准确指的是实际服务器和域名)

在 IIS 中,SMTP 正在运行。在下面 "Access" 标签, "Relay" 按钮,选择哪些计算机可以通过此虚拟服务器中继设置为 checkbox "only the list below" 名单上有 "127.0.0.1(xxx.xxx.xxx.xxx)" (x's representing actual server IP address).

服务器正在运行 Windows Server 2003 Service Pack 2, ,截至 2008 年 9 月 1 日下午 5 点已完全修补。我假设它正在运行 IIS7 (如何检查?)。

有任何想法吗?

作为回应 埃斯波: :该机器托管在数据中心。我们不想使用 Gmail 帐户(我们正在这样做,但想放弃它)。Windows Server 2003 带有自己的 SMTP 服务器。

更新:根据 Yaakov Ellis 的建议,我放弃了所有中继限制,并将服务器 IP 添加到允许列表中(使用提供的反向 DNS 按钮),然后事情就开始工作了。

感谢埃斯波和雅科夫对我的帮助。

有帮助吗?

解决方案

尝试取消 SMTP 服务器中中继的 IP 限制,并向所有中继开放。如果设置后它有效,那么您就知道问题与原始限制有关。在这种情况下,可能是 DNS 问题,或者您列出的 IP 地址有误。

其他提示

您使用了错误的 SMTP 服务器。如果您只想向您的 Gmail 帐户发送电子邮件,请查看我的答案 这里.

如果您还需要向其他帐户发送电子邮件,请向 ISP 询问您的 SMTP 详细信息。

编辑:我认为使用 ISP SMTP 服务器总是更好,因为他们(应该)让人监视邮件队列、检查漏洞并更新邮件软件。如果您的企业正在开发网络应用程序,那么几乎总是最好坚持您所做的事情,并让其他人做他们的事情(例如运行邮件服务器)。

如果出于某种原因您仍然想使用本地 SMTP 服务器,那么首先要排除 php 部分。尝试以下 KB153119 然后检查 SMTPServer IISlog 是否有错误。

编辑2:该知识库文章说它用于交换,但相同的命令也可用于其他 SMTP 服务器(包括 IIS),因此请尝试看看是否可以使用本文中的示例发送邮件。

@埃斯波:我将重新执行 KB153119。谢谢。

关于邮件服务器:我听到了。

当我发现更多时我会更新。

@Espo,该文章涉及 Exchange 服务器,而不是 IIS7.0 SMTP 服务器。

从总结来看:本文介绍如何远程登录到运行简单邮件传输协议 (SMTP) 服务的计算机上的端口 25,以解决 SMTP 通信问题。本文中的信息(包括错误消息)仅适用于尝试解决与基于 Microsoft Exchange 的服务器的 SMTP 通信问题时出现的问题,并不用于一般故障排除目的。

我有同样的问题,iis6、2003 服务器上的 php 5。Php 在尝试使用 mail() 时总是失败。我通过将中继限制从“仅下面的列表”(默认情况下为空)更改为“除下面的列表之外的所有”,设法让它接受来自 php 的邮件。中继限制可以在 smtp 服务器属性屏幕的“访问”选项卡中找到。当然,如果服务器向互联网开放,那么人们必须对这些中继限制更加明智,但就我而言,这是在开发盒上的虚拟服务器上。

希望有帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top