一年前,我做了一个"原始"PHP联系人表单发件人,经过多次测试,它成功了。它应该只向Gmail帐户发送一封电子邮件,邮件正文中包含提交的电子邮件地址或联系人表单参数。
现在,在重新设计时,我回到了联系表格,随机测试了它,它根本没有发送任何信息。没有错误消息,提交的表单从未像以前那样到达Gmail的主收件箱。
<?php
$errors = '';
$myemail = 'x@gmail.com';
$noreply = 'x@y.com';
if (empty($_POST['email']))
{
$errors .= "'n Error: Please provide an e-mail address where we can send the newsletter and special deals";
}
$email_address = $_POST['email'];
if (!preg_match(
"/^[_a-z0-9-]+('.[_a-z0-9-]+)*@[a-z0-9-]+('.[a-z0-9-]+)*('.[a-z]{2,3})$/i",
$email_address))
{
$errors .= "'n Error: Invalid email address";
}
if (empty($errors))
{
$to = $myemail;
$email_subject = "Contact form submission: $email_address";
$email_body = "You have received a newsletter signup. ".
"Email: $email_address";
$headers = "From: $noreply'n";
$headers .= "Reply-To: $email_address";
mail($to,$email_subject,$email_body,$headers);
//redirect to the 'thank you' page
header('Location: newsletter_submit.html');
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Contact form handler</title>
</head>
<body>
<!-- This page is displayed only if there is some error -->
<?php
echo nl2br($errors);
?>
</body>
</html>
这个网站上的另一个类似表单也发生了这种情况,我想知道是代码出了问题(尽管它曾经起过作用)还是Gmail改变了什么。我尝试将表单发件人的电子邮件列入白名单,但没有任何变化。
原来我们的邮件服务器拒绝了相同域的电子邮件。我将"myemail"更改为gmail帐户,将"noreply"更改为实际的"电子邮件服务器"邮件地址,然后表单突然再次出现在gmail收件箱中
不管怎样,谢谢你的想法,它帮助我缩小了可能的错误列表。