2011-11-01 62 views
3

我通过PHP中的脚本发送了一堆电子邮件,我想分析每个邮件的结果,因此我知道它是否已发送。如何知道电子邮件是否使用PHP交付?

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

+2

看一看这样的: http://stackoverflow.com/questions/1900236/how-to-check-if-a-mail-was-received-with-php – greenLizard

回答

4

您可以检查它已经发送,但检查它已经交付完全是另一回事。

事实上,我想不出任何方式,以确认它也没有检查它就会被读取已交付,这可以通过包含从服务器请求一个1x1 .gif注意的是,并记录为已访问,或用户必须访问的链接才能查看邮件的完整内容。

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

当然,你可以监视你的reply-to地址的任何退回的邮件,这将让你肯定地说,一条消息已不是已交付。

+0

是的,我认为检查弹跳电子邮件将是最好的方法。谢谢。 – ragebunny

2

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

+0

为什么downvote? – thejh

+0

,因为有跟踪退回的电子邮件的方法。 –

+0

@LukasLiesis这并不能告诉你邮件是否真的被发送。这只是一个指标。 – thejh

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或SHA-1散列将是很好)

像一个数据库:在对数据库

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

店,这也一排电子邮件。

然后链接到图像与ID

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

这样你就可以跟踪

相关问题