iis 7-在WIMP上发送PHP电子邮件失败


iis 7 - PHP emailing failing on WIMP

我有一个WordPress网站,它有一个联系人表单,在我的MAMP环境中运行良好,但当我向客户端发布WIMP服务器时,我遇到了故障。

  • 我一点也不熟悉WIMP环境——如何检查PHP错误日志
  • 顺便问一下,在WIMP上发送PHP电子邮件是否有问题会导致这种情况

代码:

<?php 
if ($_POST["contact_name"]<>'') { 
    $ToEmail = 'me@domain.com'; 
    $EmailSubject = 'New contact message';  
    $mailheader = "From: ".$_POST["contact_email"]."'r'n";  
    $mailheader .= "Reply-To: ".$_POST["contact_email"]."'r'n"; 
    $mailheader .= "Content-type: text/html; charset=iso-8859-1'r'n";  
    $MESSAGE_BODY = "<b>Name:</b> ".$_POST["contact_name"]."<br>";  
    $MESSAGE_BODY .= "<b>Email:</b> ".$_POST["contact_email"]."<br>";
    mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure"); 
?> 
<h4>Your message was sent. We will be in touch with you shortly.</h4>
<?php 
} else { 
<form id="contact-form" name="contact" method="post" action="#">
<label for="contact-name">Name *</label>
<input type="text" id="contact-name" name="contact_name" tabindex="1" class="required"/>
<label for="contact-email">Email</label>
<input type="text" id="contact-email" name="contact_email" tabindex="2" class="email" />
<input type="submit" id="contact-submit" name="contact_submit" value="" tabindex="8" />
</form>
<?php 
}; 
?>

Windows没有像unix类型操作系统那样的内置电子邮件服务器。您需要配置php.ini来添加用于中继电子邮件的SMTP服务器信息。

"mail()"函数的PHP手册页详细介绍了许多特定于Windows的点。然而,可能影响您的要点在本节中:(引用)

mail()的Windows实现在许多方面与Unix实现不同。首先,它不使用本地二进制文件来编写消息,而是只在直接套接字上操作,这意味着需要MTA侦听网络套接字(可以在本地主机上,也可以在远程机器上)。

其次,像From:、Cc:、Bcc:和Date:这样的自定义标头最初不是由MTA解释的,而是由PHP解析的。

因此,to参数不应该是"Something <someone@example.com>"形式的地址。在与MTA交谈时,邮件命令可能无法正确解析此内容。

还有其他一些事情需要考虑;请阅读手册页面了解更多信息。

希望能有所帮助。