2013-12-22 67 views

回答

14

我知道的唯一方式 - 它不是很可靠的 - 是发送HTML邮件中,你有这样的:

PHP代码:

<img src='http://www.domain.com/mailcheck.php?user=123'> 

形象,但在这个过程中,您可以跟踪GET用户。您还可以找到一种方法来修改邮件标题以请求收据 - 但我不知道该怎么做 - 而且由于请求的自愿性质,它也不可靠。

+3

就像你说的,它不是很可靠。此外,这是一种颠覆。我不会相信那些会这样跟踪我的技巧的电子邮件。 –

4

很简单,你建立一个PHP脚本,返回一个1x1图像。让该脚本记录用户代理和IP(您甚至可以记录推荐人)。

现在将其嵌入到电子邮件中。

由于gmail已经开始显示图片,但是会从它自己的服务器上托管它们,但是您可以知道邮件是否打开,但您可能无法跟踪正确的IP。检查这里一些参考:Effect of gmail caching and showing images by default

您可以了解mailchimp是怎么做的:MailChimp Working

编辑: 码参考:

<img src="http://www.example.com/checkopen.php?user_id=20" /> 

里面的checkopen.php脚本,拿到user_id场,现在对应的到这个字段,存储这个用户打开邮件。

发送邮件时,请确保每次发送邮件时都增加user_id字段。

因此,无论何时渲染此图像,它都会调用相应的url,因此您可以在系统中登录正在打开的邮件的状态。

+1

不是每个人都使用Gmail的 – Quentin

+0

那么在人们不使用Gmail你仍然可以得到正确的IP地址的情况。 –

+2

如果图像被阻挡(默认情况下,大多数客户端都会这样做),则不需要。 – Quentin

2

电子邮件有一个disposition notification field你可以用它来实现这一点。当然,这取决于远端的MUA。他们可以自由地忽略MDN(这是一个礼貌的请求,而不是其他2个答案所暗示的颠覆性内容)。您最终收件人的MUA会发送一封电子邮件回复您,表示您的邮件已被阅读。您的SMTP服务器可以过滤这些信息,并且您可以运行某种将发送的电子邮件映射到响应的程序。

我非常反对嵌入允许用户跟踪的小HTML片段。

0

尽管我没有发现为什么简单的PHP文件没有生成包含的图像,但这是另一种非常复杂的生成未被我自己的PHP 5.4.30 Web服务器拒绝的图像文件的方式。

这是我放入索引的代码。AN/email_image /子目录下的PHP文件:

<?php 
$message_id = $_REQUEST['message_id']; 

$graphic_http = 'http://mywebsite.com/email_image/message_open_tracking.gif'; 

$filesize = filesize('message_open_tracking.gif'); 

header('Pragma: public'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Cache-Control: private',false); 
header('Content-Disposition: attachment; filename="a_unique_image_name_' . $message_id . '.gif"'); 
header('Content-Transfer-Encoding: binary'); 
header('Content-Length: '.$filesize); 
readfile($graphic_http); 
exit; 
?> 

对于图像文件名,我用了以下内容:

http://mywebsite.com/email_image/?message_id=12345 

内email_image文件夹也命名为 “message_open_tracking.gif” 空白1x1的gif图片。

也可以修改index.php文件,以便使用message_id将该消息标记为已被读取。如果查询字符串中包含其他变量(如收件人的电子邮件地址),那些值也可以在该index.php文件中使用。

非常感谢贝内特石以下文章: http://www.phpdevtips.com/2013/06/email-open-tracking-with-php-and-mysql/

相关问题