我如何知道是否使用PHP发送了电子邮件?

时间:2011-11-01 10:42:34

标签: php email

我正在通过PHP脚本发送大量电子邮件,我想分析每个电子邮件的结果,所以我知道它是否已经发送。

无论如何通过PHP做到这一点?

3 个答案:

答案 0 :(得分:4)

您可以检查已发送,但检查已发送完毕是另一回事。

事实上,我无法想到任何方式来确认它已经发送而没有检查它是否被读取,或者通过包含从服务器请求的1x1 .gif并记录为具有已被访问,或用户必须访问的链接才能查看邮件的完整内容。

两者都没有保证(并非所有电子邮件客户端都会显示图片或使用HTML),并且不会读取所有“已发送”的消息。

您当然可以监控reply-to地址以查看任何退回邮件,这样可以确定邮件已经发送。

答案 1 :(得分:3)

如果可以轻松检测到已发送的邮件,则检测是否已发送邮件是另一种情况。

您可以做的是在您的网站上托管的电子邮件中实施1px图像。该图像是由PHP创建的,因此您可以为其提供唯一的ID来检测图像是否已加载。如果您在其上禁用缓存,您甚至可能会检测到邮件的读取频率。

像这样创建图像:

   header('Content-Type: image/png');
   $im = @imagecreate(1, 1);
   $background_color = imagecolorallocate($im, 255, 255, 255);  // make it white
   imagepng($im,"image.png");
   imagedestroy($im);

将其存储在名为image.php的页面上(或其他内容,由您决定)。也存储在已发送电子邮件的数据库中并为其创建唯一ID(md5或sha1哈希会很好)

类似的东西:

$id = sha1([ID FROM DATABASE] + salt)

也将它存储在电子邮件行的数据库中。

然后链接到ID为

的图像
<img src="http://www.example.com/image.php?id=SHA1HASHHERE" />

这样你就可以跟踪

答案 2 :(得分:2)

没有非常好的方法 - 但是,您可以使用包含邮件地址和日志请求的URL嵌入图像。