【问题标题】:Email delivery failure in php mail functionphp邮件功能中的电子邮件传递失败
【发布时间】:2012-02-16 09:44:26
【问题描述】:

我使用 PHP mail() 函数来发送电子邮件。是否可以查明电子邮件是否已发送或失败?

【问题讨论】:

    标签: php email sendmail


    【解决方案1】:

    不,无法确定是否收到了电子邮件:电子邮件不是保证传递机制。

    除非您在电子邮件中包含收件人必须点击的某种回复链接,否则不会。

    【讨论】:

    • 通常情况下,如果电子邮件未能发送到有效的电子邮件地址,则会发送传递失败通知。
    【解决方案2】:

    尝试包括 X-Failed-Recipients:>

    【讨论】:

      【解决方案3】:

      PHP Mail 函数返回一个布尔值。因此,您可以很容易地知道邮件是否被接受以进行投递。但是您无法知道它是否是由邮件服务器 (SMTP) 发送的

      bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
      

      如果邮件被成功接收,则返回 TRUE,FALSE 否则。

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

      链接:http://php.net/manual/en/function.mail.php

      代码

      if(mail(...)){ ... }
      else{ ... }
      

      【讨论】:

        【解决方案4】:

        不,不检查邮件日志是不可能的。如果邮寄者接受了您的邮件,邮件函数仅返回true,但如果您的收件人已收到邮件,则不会向您提供信息。

        如果邮件被成功接收,则返回 TRUE,FALSE 否则。

        需要注意的是,仅仅因为邮件被接受投递,并不意味着邮件实际上会到达 预定目的地。

        See here.

        【讨论】:

          【解决方案5】:

          你在这里......使用 PHPmailer 发送电子邮件的基本方法:

          if(!$mail->Send()){
             echo "Emails Sending Failed!";
          }else{
             echo "Emails Successfully Sent!";
          }
          

          为了查找额外的失败消息,附加以下代码将有所帮助...

          echo $mail->ErrorInfo;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-05-23
            • 1970-01-01
            • 2011-09-19
            • 2010-11-25
            • 1970-01-01
            • 1970-01-01
            • 2018-09-26
            相关资源
            最近更新 更多