我最近和一个客户有过这个问题。代码读取:
ini_set( "sendmail_from", "noreply@<current-domain>.com" );
// $target_email has been validated as a value username.
// $subject is a simple String.
// $message is an HTML message.
mail( $target_email, $subject, $message );
当我在我的机器上测试这个时,它工作得很好。当我在家里、工作中、Windows 2000(IE6)、XP(四台不同的机器,以及一个virtualbox实例)(IE6&7、Opera 9、Firefox 3)和Vista(IE 7)上测试它时,以及通过Ubuntu上的konquerer和firefox(在两台不同的机器上),它工作得很好(我没有Mac)。我在四个不同的网络和三个不同的县尝试过这个网站。我竭尽所能破坏了这个网站,没有收到任何错误,电子邮件来自noreply@<current domain>.com,很快就到达了预期的地址。
当我的客户在他的办公室测试它时,他收到了一个SMTP错误,说noreply@<current domain>.com名称不存在,他没有收到电子邮件。但在我的服务器上运行时,同样的行也可以正常工作(运行php 5.3的basic lamp设置,它们有Windows5.2.6)。
到底发生了什么?我的最佳猜测是,这是一个奇怪的Windows服务器问题,我不知道还有什么可能。不幸的是,我无法看到他们如何配置本地机器来测试这个理论。