我有一个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"]."rn";
$mailheader .= "Reply-To: ".$_POST["contact_email"]."rn";
$mailheader .= "Content-type: text/html; charset=iso-8859-1rn";
$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交谈时,邮件命令可能无法正确解析此内容。
还有其他一些事情需要考虑;请阅读手册页面了解更多信息。
希望能有所帮助。