Php 电子邮件跟踪-苹果邮件

Php 电子邮件跟踪-苹果邮件,php,http,email,http-referer,apple-mail,Php,Http,Email,Http Referer,Apple Mail,除了GMail,我已经问了很多关于这个的问题,我对收到的一个非常棒的回答非常满意。然而,我遇到了另一个电子邮件客户端的问题:苹果邮件 我正在创建自己的电子邮件跟踪系统,用于电子邮件营销跟踪。我已经能够确定每个人的电子邮件客户端,他们正在使用的http参考,但由于某些原因,苹果邮件,如GMail,不发送跨http\U参考。对于GMail来说,解决方案是在我托管透明图像的地方使用https,但这对Apple Mail不起作用 print\r($\u服务器)仅提供此类标题: WM_UCONTROL_X

除了GMail,我已经问了很多关于这个的问题,我对收到的一个非常棒的回答非常满意。然而,我遇到了另一个电子邮件客户端的问题:苹果邮件

我正在创建自己的电子邮件跟踪系统,用于电子邮件营销跟踪。我已经能够确定每个人的电子邮件客户端,他们正在使用的http参考,但由于某些原因,苹果邮件,如GMail,不发送跨http\U参考。对于GMail来说,解决方案是在我托管透明图像的地方使用https,但这对Apple Mail不起作用

print\r($\u服务器)仅提供此类标题:

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
WM_UCONTROL_XMLRPC_服务器-http://aaaaaaaaa
HTTPS-on
访问\u域-AAAA
数据库_服务器-AAAAA
SITE_ROOT-/home/121000
站点\u CGIROOT-/home/121000/cgi-bin
站点\u HTMLROOT-AAAAA
PHPRC-AAAA
HTTP_X_转发_主机-aaaaaaa
HTTP_X_转发_服务器-AAAA
HTTP_X_转发_FOR-AAAAA
HTTP_主机-AAAAA
HTTP_连接-关闭
HTTP_USER_AGENT-Mozilla/5.0(Macintosh;U;Intel Mac OS X 10_5_5;en-us)AppleWebKit/525.18(KHTML,如Gecko)
HTTP_接受-*/*
HTTP_接受_语言-en us
HTTP_ACCEPT_编码-gzip,deflate
服务器\u签名-AAAAA端口443处的Apache/2.2.9服务器
服务器软件-Apache/2.2.9
服务器名称-AAAAA
服务器地址-AAAAA
服务器\u端口-443
请注意,某些细节用字符串a隐藏

当Apple Mail客户端请求此图像时,是否有其他方法可以确定

作为旁注,这是我希望SO有办法邀请某些用户提问的时候,因为yc上次帮了大忙

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

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

以下是我要做的-

  • 首先,每个电子邮件地址的图像链接应该是唯一的。类似于pixel-.jpg的东西。应该以某种方式对用户的电子邮件地址进行编码
  • 跟踪作为http服务器一部分发送的用户代理
  • 如果你得到了referer头并能解析它,那就太好了。如果没有,用户代理可以提供帮助
  • 如果用户代理指示浏览器,请从电子邮件地址中找出电子邮件客户端。例如,如果电子邮件是abc@gmail.com你知道它的gmail网站
  • 谷歌和其他公司也提供托管电子邮件。因此,如果用户代理指示浏览器,并且电子邮件地址为abc@mydomain.com,电子邮件客户端仍然有可能是gmail。要了解更多信息,您可以查找mydomain.com的MX记录。如果MX记录中有谷歌或谷歌邮箱,你就知道你在处理gmail。同样的方法也可用于其他电子邮件托管公司
  • 如果是基于桌面的客户端,如outlook或thunderbird,用户代理通常会指出这一点
  • 通常,电子邮件客户端会自动阻止外部图像,因此只有当用户允许为您的电子邮件地址加载图像时,这种方法才会起作用

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

    。。但是,如果用户不允许使用图像并且不单击链接,则无法跟踪用户是否实际阅读了电子邮件


    最后提示:使用来解码用户代理。这是最好的库。

    这无法帮助他检测正在使用的电子邮件客户端是否是Apple Mail。虽然这可能会起作用,但这意味着我必须更改当前的实现。我希望找到电子邮件客户端只是从图像的要求。我已经为GMail、雅虎、AOL、outlook等做了这些,我真的希望我能以同样的方式为Apple Mail做同样的事情!嗯,你可能发现了什么。我在这里查看了safari的用户代理:-看起来它有一个类似safari用户代理的版本,但不是Apple Mail用户代理。虽然不确定,但任何人都可以确认情况始终如此??事实上,这可能不起作用,这里有一个safari用户代理:-太相似了。@Abs您可能猜不透-但是,是否有任何请求来自safari?如果不是,你可以假设它们来自苹果邮件。如果您有“浏览器中的视图”按钮,请确保添加“获取参数”或使引用无效的内容。