如何知道php邮件是否失败

时间:2011-12-05 11:52:46

标签: php email

我发送来自php mail()的邮件:如果发送失败到destinatio我想收到失败的消息。

$to = 'itsdfdsf@7sisters.in';
    $email_from = "info@7sisters.in";

    $full_name = 'XXXX';
    $from_mail = $full_name.'<'.$email_from.'>';



    $subject = "testing sender name";
    $message = "";
    $message .= '
            <p><strong>This is only a test mail. Please do not reply.</strong><br />
    ';
    $from = $from_mail;

    //$headers = "" .
    //         "Reply-To:" . $from . "\r\n" .
    //         "X-Mailer: PHP/" . phpversion();

    $headers = "From:" . $from_mail . "\r\n" .
               "Reply-To:" . $from_mail . "\r\n" .
               "X-Mailer: PHP/" . phpversion();


    $headers .= 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";        

    if(!mail($to,$subject,$message,$headers))
    {
        echo 'failed !!';
    }

但是虽然$to邮件不存在,但它没有显示failed !!

7 个答案:

答案 0 :(得分:5)

邮件方法只是发送邮件。如果它没有收到任何错误(例如,没有找到服务器等),它将返回成功。除非您根据退回的电子邮件等创建一些代码,否则您将无法知道邮件是否实际落在收件人的收件箱中。

答案 1 :(得分:3)

检查mail

的回复
  

如果邮件成功接受传递,则返回TRUE,FALSE   否则。

     

重要的是要注意,因为邮件被接受了   交付,并不意味着邮件实际上会达到预期的目的   目的地。

虽然它返回true的事实可能意味着你的邮件程序正在接受邮件,但是当它尝试发送给任何人时失败...

您应该通过验证器运行$to以检查其有效地址,如果不是,则抛出错误,不要依赖mail()过滤掉您已经知道错误的内容,或者可以轻松检查。

- UPDATE

然后查看@SeRPRo,但是您尝试做的是努力以编程方式进行测试 - 发送电子邮件要求用户点击链接以验证它是否真实而不是尝试查询更容易,更可靠所有具有不同行为的SMTP服务器(读取:被打破到不同程度)。另请注意,您的预期行为(代码明智)难以与垃圾邮件发送者区分开来,因此如果您避开验​​证电子邮件路由,请不要惊讶地发现它很难。

答案 2 :(得分:3)

我认为您想要的是检查真实的电子邮件,而不仅仅是有效的格式化电子邮件。所以我建议你看一下这个blog

答案 3 :(得分:1)

  

但是,虽然$ to mail不存在,但它没有显示失败!!

实际上,邮件正在传递到SMTP服务器这一事实并不意味着它将被传递给最终用户。在PHP中没有简单的方法来检查它是否已经交付。

答案 4 :(得分:0)

您可以将自己视为一种测试它离开发件箱的方式。

答案 5 :(得分:0)

在我的例子中,它有助于通过命令行参数“-f”设置返回路径,该参数可以在mail()的$ additional_parameters参数中传递。所以我打电话给

mail($to, $subject, $message, $headers, "-f address.where.i.want.the.bounces@xy.com");

...根据对http://www.php.net/manual/en/function.mail.php的一些评论,托管 - 活动反应不同,并且有不同的限制(地址可能需要在同一个托管帐户中注册,或者在同一个域中,与“来自:”在......中......等等)

我收到跳出的页面(看似没有上述限制)在Domainfactory http://www.df.eu

主持

答案 6 :(得分:0)

使用phpmailer发送电子邮件并设置$ mail-&gt; AddCustomHeader('Return-path:bounce@mail.com'); 如果收件人邮件ID不存在或收件人未收到任何其他案件的电子邮件,则会在bounce@mail.com发送退回邮件。