Php邮件脚本工作但没有收到电子邮件

时间:2017-05-24 10:12:37

标签: php email

我正在处理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!");
        }

        ?>  

2 个答案:

答案 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);