【问题标题】:php mail() not working windows 2003, IIS SMTPphp mail() 不工作 Windows 2003,IIS SMTP
【发布时间】:2008-09-02 06:15:57
【问题描述】:

我遇到了这个问题:

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(如何检查?)。

有什么想法吗?

回复Espo:这台机器托管在数据中心。我们不想使用 gmail 帐户(正在这样做,想摆脱它)。 Windows server 2003 自带 SMTP 服务器。

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

感谢 Espo 和 Yaakov 帮助我。

【问题讨论】:

    标签: php iis smtp


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您使用了错误的 SMTP 服务器。如果您只想向您的 gmail 帐户发送电子邮件,请查看我的回答 here

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

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

      如果您仍然出于某种原因想要使用本地 SMTP 服务器,首先要排除 php-part。尝试关注KB153119,然后检查您的 SMTPServer IISlog 是否有错误。

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

      【讨论】:

        【解决方案3】:

        @Espo:我会在 KB153119 中这样做。谢谢。

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

        我会在发现更多信息时更新。

        【讨论】:

          【解决方案4】:

          @Espo,有问题的文章与 Exchange 服务器有关,而不是 IIS7.0 SMTP 服务器。

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

          【讨论】:

            【解决方案5】:

            我遇到了同样的问题,iis6, 2003 服务器上的 php 5。 PHP 在尝试使用 mail() 时总是失败。 通过将中继限制从 'Only the list below' (默认为空)更改为 'All except the list below' ,我设法让它接受来自 php 的邮件。 中继限制可以在 smtp 服务器属性屏幕的访问选项卡中找到。 当然,如果服务器对互联网开放,那么人们必须对这些中继限制更加敏感,但在我的情况下,这是在开发盒上的虚拟服务器上。

            希望有帮助。

            【讨论】:

              猜你喜欢
              • 2018-06-04
              • 1970-01-01
              • 1970-01-01
              • 2010-10-04
              • 2012-01-30
              • 2012-02-12
              • 2017-10-27
              • 2015-07-27
              • 2012-04-18
              相关资源
              最近更新 更多