2

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

这是我用来从 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";

我将如何实现这一目标?

4

2 回答 2

5

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

WHERE id NOT IN 
于 2013-02-12T01:26:40.403 回答
0

您不能以这样的简单方式从 PHP 中执行此操作。

把它想象成一封通过邮政服务的信。你所能做的就是把信交给邮递员,并希望它到达目的地。邮递员不会回来告诉您投递是否成功,或者收件人是否真的阅读了这封信。PHP 的 mail() 函数(及其派生函数)返回 TRUE 以指示消息已被接受以进行传递尝试,而不是成功传递。(交付可能需要数小时或数天才能完成。)

因此,您能做的最好的事情就是大致的交货通知。有几种方法可以做到这一点:

  • 在电子邮件中使用跟踪像素,当用户打开邮件时会被 ping 通。然而,鉴于现在大多数电子邮件客户端默认“不显示图像”,我认为这种技术相当不可靠。
  • 使用收件人唯一的退回地址发送每封邮件。如果邮件无法投递,它将返回到自定义地址——并且该返回消息可用于指示原始收件人的电子邮件地址不正确。这可能是最准确的方法,但配置起来并不简单。
  • 使用退货收据。就像跟踪像素一样,我认为大多数电子邮件客户端默认从不发送这些,因此这也可能不可靠。
  • 使用交货状态通知。这将需要使用支持它的服务器并将其发送到支持它的服务器。
  • 通过将为您进行此类跟踪的服务发送您的邮件。(例如 MailChimp 或持续联系)
于 2013-02-12T18:15:28.333 回答