【问题标题】:Email Tracking - Apple Mail电子邮件追踪 - Apple Mail
【发布时间】:2011-07-03 23:42:11
【问题描述】:

我已经为此询问了similar question,但对于 GMail,我对收到的很棒的回答非常满意。但是,我在使用另一个电子邮件客户端时遇到了问题:Apple Mail。

我正在为电子邮件营销跟踪创建自己的电子邮件跟踪系统。我已经能够通过使用 http 推荐人来确定他们正在使用的每个人的电子邮件客户端,但由于某种原因,像 GMail 这样的 Apple Mail 不会通过 HTTP_REFERRER 发送。对于 GMail,解决方案是在我托管透明图像的地方使用 https,但这不适用于 Apple Mail。

print_r($_SERVER); 只给出这种标题:

WM_UCONTROL_XMLRPC_SERVER - http://aaaaaaaaa

HTTPS - on

ACCESS_DOMAIN - aaaaa

DATABASE_SERVER - aaaaaaa

SITE_ROOT - /home/121000

SITE_CGIROOT - /home/121000/cgi-bin

SITE_HTMLROOT - aaaaaa

PHPRC - aaaaa

HTTP_X_FORWARDED_HOST - aaaaaaa

HTTP_X_FORWARDED_SERVER - aaaaa

HTTP_X_FORWARDED_FOR - aaaaaa

HTTP_HOST - aaaaaa

HTTP_CONNECTION - close

HTTP_USER_AGENT - Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; en-us) AppleWebKit/525.18 (KHTML, like Gecko)

HTTP_ACCEPT - */*

HTTP_ACCEPT_LANGUAGE - en-us

HTTP_ACCEPT_ENCODING - gzip, deflate

SERVER_SIGNATURE - <address>Apache/2.2.9 Server at aaaaaaa Port 443</address>


SERVER_SOFTWARE - Apache/2.2.9

SERVER_NAME - aaaaaa

SERVER_ADDR - aaaaaa

SERVER_PORT - 443

请注意,某些细节隐藏在字符串中。

当 Apple Mail 客户端请求此图像时,我还有其他方法可以查明吗?

顺便说一句,我希望 SO 有办法邀请某些用户提问,因为 yc 上次帮了大忙!

【问题讨论】:

    标签: php http email http-referer apple-mail


    【解决方案1】:
    Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; en-us) AppleWebKit/525.18 (KHTML, like Gecko)
    

    您可以检查该用户代理是否仅匹配 Apple 的邮件(即不匹配 Safari 或其他 Apple WebKit 实现)。

    【讨论】:

    • 这不会帮助他检测正在使用的电子邮件客户端是否是 Apple Mail。
    • 虽然这可能有效,但这意味着我必须更改我当前的实现。我希望仅从图像的请求中找出电子邮件客户端。我已经为 GMail、Yahoo、AOL、outlook 等做了这个,我真的希望我能以同样的方式为 Apple Mail 做同样的事情!
    • 嗯,你可能会在那里找到一些东西。我在这里查看了 safari 的用户代理:useragentstring.com/pages/Safari - 看起来它有一个在 safari 用户代理之后的版本,而不是 Apple Mail 用户代理。不过不确定,任何人都可以确认情况总是如此??
    • 其实这可能行不通,这里有一个 safari 用户代理:useragentstring.com/Safari_id_6458.php - 太相似了。
    • @Abs 您可能一直在猜测 - 但是,any 请求是否应该来自 Safari?如果不是,您可以假设它们来自 Apple Mail。如果您有 在浏览器中查看 按钮,请务必添加 GET 参数或其他内容以使引荐来源网址无效。
    【解决方案2】:

    这就是我要做的 -

    1. 首先,每个电子邮件地址的图片链接应该是唯一的。像pixel-.jpg这样的东西。应该以某种方式对用户的电子邮件地址进行编码。
    2. 跟踪作为 http 服务器的一部分发送的用户代理。
    3. 如果您获得了引荐来源标头并且可以对其进行解析,那就太好了。如果没有,用户代理可以提供帮助。
    4. 如果用户代理指示浏览器,则从电子邮件地址中找出电子邮件客户端。例如,如果电子邮件是 abc@gmail.com,您就知道它的 web gmail。
    5. Google 和其他公司也提供托管电子邮件。因此,如果用户代理指示浏览器,并且电子邮件地址是 abc@mydomain.com,那么电子邮件客户端仍有可能是 gmail。要了解更多信息,您可以查找 mydomain.com 的 MX 记录。如果 MX 记录中包含 google 或 googlemail,则您知道您正在处理 gmail。其他电子邮件托管公司也可以使用相同的方法。
    6. 如果是基于桌面的客户端,例如 Outlook 或 Thunderbird,用户代理通常会指出这一点。

    通常,电子邮件客户端会自动阻止外部图像,因此这种方法只有在用户允许为您的电子邮件地址加载图像时才有效。

    一个常见的技巧是在图像中以及电子邮件中的所有链接上都有令牌。然后添加一行“如果您无法正确查看此消息,请单击此处”。如果图像被允许,那就太好了。否则,用户将无法阅读您的消息,并且可能会单击该链接。无论哪种方式,您都会获得用户代理和哈希令牌。

    .. 但是如果用户不允许使用图片并且没有点击链接,则无法跟踪用户是否真的阅读了电子邮件。

    最后提示:使用WURFL library 解码用户代理。它是目前最好的图书馆。

    【讨论】: