我正在通过PHP脚本发送大量电子邮件,我想分析每个电子邮件的结果,所以我知道它是否已经发送。
无论如何通过PHP做到这一点?
答案 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嵌入图像。