我正在处理Php邮件脚本可能联系表单,条件返回TRUE,但我没有收到任何电子邮件。解决方案PLZ!
<?php
//if "email" variable is filled out, send email
if (isset($_POST['submit'])) {
//Email information
$admin_email = "address@gmail.com";
$email = $_POST['email'];
$comment = $_POST['comment'];
$name = $_POST['name'];
//send email
mail($admin_email,$comment, "From:" . $email);
print("DONE!");
}else{
echo("failed!");
}
?>
答案 0 :(得分:0)
通过添加标题进行检查,并参考下面的代码,这将有助于您进一步。
如果正常工作,请检查您的端口。
参考:http://php.net/manual/en/function.mail.php
$to = 'abc@example.com';
$subject = 'subject';
$message = 'XYZ';
$headers = 'From: pqr@example.com' . "\r\n" .
'Reply-To: web@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
答案 1 :(得分:0)
您的脚本似乎没有发送电子邮件的原因有多种。除非有明显的语法错误,否则很难诊断这些事情。如果没有,您需要查看下面的清单,找出您可能遇到的任何潜在陷阱。
确保启用错误报告并将其设置为报告所有错误
错误报告对于根除代码中的错误和PHP遇到的常规错误至关重要。需要启用错误报告才能接收这些错误。将以下代码放在PHP文件的顶部(或主配置文件中)将启用错误报告。
error_reporting(-1);
ini_set('display_errors', 'On');
set_error_handler("var_dump");
确保提供所有邮件标题
如果某些垃圾邮件软件缺少常见标题,例如“发件人”和“回复”,则会拒绝邮件:
$headers = array("From: from@example.com",
"Reply-To: replyto@example.com",
"X-Mailer: PHP/" . PHP_VERSION
);
$headers = implode("\r\n", $headers);
mail($to, $subject, $message, $headers);
Make sure mail headers have no syntax errors
无效的标头与没有标头一样糟糕。一个不正确的角色可能只是让您的电子邮件脱轨。仔细检查以确保您的语法正确,因为PHP不会为您捕获这些错误。
$headers = array("From from@example.com", // missing colon
"Reply To: replyto@example.com", // missing hyphen
"X-Mailer: "PHP"/" . PHP_VERSION // bad quotes
);
确保收件人值正确
有时,问题就像电子邮件收件人的值不正确一样简单。这可能是由于使用了不正确的变量。
$to = 'user@example.com';
//其他变量.... 邮件($ recipient,$ subject,$ message,$ headers); // $收件人应该是$ to 另一种测试方法是将收件人值硬编码到mail()函数调用中:
mail('user@example.com', $subject, $message, $headers);