PHP:查看不成功的电子邮件

时间:2013-02-12 01:25:36

标签: mysql php

我正在试图弄清楚如何显示已发送的不成功电子邮件列表以及测试方法。 我可以显示已发送的电子邮件列表,但我不确定如何检索未成功发送的电子邮件列表。

以下是我用来从mysqldb中检索它的内容:

            //get the email address list
            $query = "SELECT email FROM users 
                    WHERE id IN (SELECT participant_id FROM roster AS ur WHERE ur.roster_id=".$roster['roster_id'].")";
            $result = mysql_query($query);
            $emailstring2 = "";
            $email2 = $result;
            while ($row = mysql_fetch_object($email2)){
            $emailstring2 .= $row->email. "\n ";
}

在消息部分,我通过以下方式检索它:

   $message .="Successful emails: \n".$emailstring2." \r\n";

我将如何实现这一目标?

2 个答案:

答案 0 :(得分:5)

一个关键字可以为您提供未发送的关键字:NOT

WHERE id NOT IN 

答案 1 :(得分:0)

你不能以这样简单的方式从PHP中做到这一点。

将其视为通过邮政服务的一封信。你所能做的就是把信寄给邮递员,并希望它到达目的地。邮递员不会回来告诉您交付是否成功,或者收件人是否真正阅读了该信件。 PHP的mail()函数(及其衍生物)返回TRUE表示该邮件已被接受传递尝试,它已成功传递。 (交付可能不会发生数小时或数天。)

因此,您可以做的最好的是近似交货通知。有几种方法可以做到这一点:

  • 使用电子邮件中的跟踪像素,该跟踪像素在用户处被ping 打开邮件。但是,鉴于现在大多数电子邮件客户端 默认为“不显示图像”,我认为这种技术是相当的 不可靠的。
  • 发送每封邮件,其中包含对收件人唯一的退回地址。如果 邮件无法传递,它将返回自定义地址 - 并且该返回消息可用于指示原始收件人的电子邮件地址不好。这可能是最准确的方法,但配置起来并不简单。
  • 使用退货收据。跟踪像素一样,我想大多数电子邮件客户端 默认永远不会发送这些,所以这也可能不可靠。
  • 使用递送状态通知。这将需要使用服务器 支持它并发送到支持它的服务器。
  • 通过一项服务发送邮件,为您进行此类跟踪。 (例如MailChimp或Constant Contact)