【问题标题】:Email Tracking - GMail电子邮件跟踪 - GMail
【发布时间】:2011-06-30 11:42:42
【问题描述】:

我正在为电子邮件营销跟踪创建自己的电子邮件跟踪系统。我已经能够通过使用 http referrer 来确定他们正在使用的每个人的电子邮件客户端,但由于某种原因,GMAIL 根本不发送 HTTP_REFERRER!

所以我试图找到另一种方法来识别 gmail 何时从我的服务器请求透明图像。我得到以下标题print_r($_SERVER);

DOCUMENT_ROOT  =  /usr/local/apache/htdocs

GATEWAY_INTERFACE  =  CGI/1.1

HTTP_ACCEPT  =  */*

HTTP_ACCEPT_CHARSET  =  ISO-8859-1,utf-8;q=0.7,*;q=0.3

HTTP_ACCEPT_ENCODING  =  gzip,deflate,sdch

HTTP_ACCEPT_LANGUAGE  =  en-GB,en-US;q=0.8,en;q=0.6

HTTP_CONNECTION  =  keep-alive

HTTP_COOKIE  =  __utmz=156230011.1290976484.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=156230011.422791272.1290976484.1293034866.1293050468.7

HTTP_HOST  =  xx.xxx.xx.xxx

HTTP_USER_AGENT  =  Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.237 Safari/534.10

PATH  =  /bin:/usr/bin

QUERY_STRING  =  i=MTA=

REDIRECT_STATUS  =  200

REMOTE_ADDR  =  xx.xxx.xx.xxx

REMOTE_PORT  =  61296

REQUEST_METHOD  =  GET

该列表中有什么有用的吗?或者我还能做些什么来实际获取 http 引荐来源网址,如果不是其他 ESP 是如何设法找到是否使用 gmail 来查看电子邮件的

顺便说一句,如果我们能阻止这是否合乎道德,我将不胜感激,因为许多 ESP 已经这样做了,我只是不想为他们的服务付费,我想在内部进行。

感谢大家的任何实施建议。

更新

只是想我会更新这个问题并根据赏金更清楚地说明。

我想知道用户何时打开我发送到 GMail 收件箱的电子邮件。假设,我有通常的透明图像跟踪,并且用户没有阻止图像。

我想使用单个请求和请求透明图像时获得的标头详细信息来执行此操作。

【问题讨论】:

  • GMail 故意阻止这个,所以可能没有办法绕过它:stackoverflow.com/questions/4264846/…
  • @Pekka - 嗯,我明白了。知道其他电子邮件跟踪服务如何识别订阅者是否使用了 GMail?也许GMail的远程端口保持不变??如果您查看此图像,您可以看到活动监视器能够识别 GMail! i3.campaignmonitor.com/uploads/images/email-clients-big.jpg
  • 有趣。我会说他们只是对@gmail.com 地址进行廉价检查,但他们声称他们真的可以找到。不知道他们是怎么做到的
  • @Pekka - 是的,这就是我感到惊讶的原因,老实说我也愿意这样做!
  • @Pekka 虽然点击链接可能是这种情况,但图像并非如此。这里发生的事情是 HTTPS->HTTP 不会泄漏引荐来源信息。解决方案是在 HTTPS 上托管图像。

标签: php email http-headers gmail http-referer


【解决方案1】:

您的图像是通过 HTTP 还是 HTTPS 请求的?

如果是这样,那就是问题所在。

HTTPS->HTTP 引荐不会泄露引荐标头 (HTTP_REFERER)。

如果您将 HTTP 托管图像嵌入到从 HTTPS 页面请求的电子邮件中,它不会发送引荐来源网址。 (但是,请求 HTTPS 的 HTTP 页面确实会发送引用)。解决方案是将图像嵌入为 HTTPS。我已经测试过了,果然,安全的 HTTPS 图像确实发送了 Referrer。

默认情况下,Gmail 可以阻止加载图像上的引荐来源信息的一种方法是,如果他们使用大多数现代浏览器支持的a referrer policy。 (截至 2011 年,他们没有实施这样的政策。)

请参见下面的嵌入图像的屏幕截图,该图像是使用请求的 HTTP REFERER 动态生成的:

【讨论】:

  • 所以我必须在跟踪代码中包含电子邮件地址?我希望不用那么长,因为我可以在不这样做的情况下确定其他电子邮件客户端,而且对于 GMail 用户来说似乎有点痛苦!
  • @Abs 最好不要,因为这样不太安全。相反,某种哈希或令牌可以匹配到后端的特定电子邮件地址。但是,是的,如果您还没有这样做的话,这确实会造成一些分析上的麻烦。
  • @Abs 请求的 IP 地址属于最终用户/客户端,而不是 Gmail 服务器。
  • 刚刚意识到然后删除了我的评论!不过没有看到你的评论。
  • 如果有人发现此线程,Gmail 现在会代理电子邮件中的所有图像,以防止基于每个用户的图像跟踪。 gmailblog.blogspot.com/2013/12/images-now-showing.html 您可以通过为每个用户创建唯一的图像文件名来解决这个问题。更多信息在这里:redant.com.au/how-we-do/cache-busting-gmail-new-image-caching
【解决方案2】:

使链接类似于http://www.example.com/image.jpg?h=8dh38dj

image.jpg 是一个 PHP 文件,8dh38dj 是您在其中包含链接的电子邮件的哈希值。当用户请求该文件时,您的 PHP 脚本将获得“8dh38dj”,在您的数据库中查找并找到匹配的电子邮件。从 example@gmail.com 解析域,即 gmail.com,你知道它来自 gmail。要使 jpg 文件像 PHP 一样执行,请在 php 中使用 AddHandler

【讨论】:

  • 这并没有告诉他用户正在使用哪个电子邮件客户端。
  • 我猜这适用于 GMail,但它需要一些代码更改,而如果我可以像我为 hotmail、yahoo、outlook 等所做的那样只使用 http 标头来做到这一点,那将是我的工作轻松多了!
  • GMail 提供 IMAP 访问。 GMail 用户可能没有使用 GMail 客户端。
  • @Abs GMail 还提供自定义域上的托管邮件......它可能会严重扭曲结果。除此之外,这种方法可以很好地查明电子邮件是否已被阅读(虽然它不防水,但许多邮件客户端会阻止外部资源)
  • @Pekka @David - 当您将它与用户代理结合使用时,这种方法实际上非常好。对于 IMAP 访问,电子邮件客户端(thunderbird、outlook 等)将发送用户代理,这足以找出客户端。对于浏览器访问,Nick 建议的方法很棒。对于自定义域,您只需要进行 MX 查找 - MX 记录将指向 googles 服务器。
猜你喜欢
  • 2017-03-30
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 2015-09-26
  • 2018-09-19
  • 1970-01-01
  • 2014-07-30
  • 1970-01-01
相关资源
最近更新 更多