php mail()在Windows 2003,IIS SMTP中不起作用

时间:2020-03-05 18:46:16  来源:igfitidea点击:

我遇到了这个问题:

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

从此脚本中:

<?php
$to = "[email protected]";
$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 = [email protected]
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =

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

在IIS中,SMTP正在运行。在"访问"选项卡上的"中继"按钮下,将"选择哪些计算机可以通过该虚拟服务器中继"设置为"仅在下面的列表"复选框,并且在列表上为" 127.0.0.1(xxx.xxx)。 xxx.xxx.xxx)"(x代表实际的服务器IP地址)。

服务器正在运行Windows Server 2003 Service Pack 2(已从2008年9月1日下午5点开始全面修补)。我认为服务器正在运行IIS7(如何检查?)。

有任何想法吗?

作为对Espo的回应:该计算机托管在数据中心。我们不想使用gmail帐户(正在这样做,希望不再使用该帐户)。 Windows Server 2003带有自己的SMTP服务器。

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

感谢Espo和Yaakov的帮助。

解决方案

回答

我们使用了错误的SMTP服务器。如果我们只打算将电子邮件发送到gmail帐户,请在此处查看我的答案。

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

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

如果我们仍然出于某种原因想要使用本地SMTP服务器,那么第一件事就是排除php部分。尝试按照KB153119进行操作,然后检查SMTPServer IISlog中是否有错误。

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

回答

@Espo:我会做KB153119. 谢谢。

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

当我发现更多内容时,我会进行更新。

回答

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

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

回答

尝试删除SMTP服务器中中继的IP限制,然后将其开放给所有中继。如果在设置该选项后可以正常工作,则我们知道问题与原始限制有关。在这种情况下,可能是DNS问题,或者我们列出的IP地址错误。

回答

我有同样的问题,iis6,2003服务器上的php 5. 尝试使用mail()时,php总是失败。
通过将"中继限制"从"仅以下列表"(默认情况下为空)更改为"除以下列表之外的所有内容",我设法使其接受了来自php的邮件。
可以在smtp服务器属性屏幕的"访问"选项卡中找到中继限制。
当然,如果服务器对Internet开放,则必须对这些中继限制更加敏感,但是在我的情况下,这是在开发箱上的虚拟服务器上。

希望能有所帮助。