【问题标题】:Problems with tracking pixels and Gmail proxy跟踪像素和 Gmail 代理的问题
【发布时间】:2016-11-08 14:57:03
【问题描述】:

我正在尝试为从 wordpress 发出的电子邮件实现自定义跟踪像素。

感谢这些帖子:

Tracking email with PHP and image

Tracking email opens with a real image

尤其是

http://www.phpdevtips.com/2013/06/email-open-tracking-with-php-and-mysql/

我能够实现核心理念。

电子邮件通过以下方式加载跟踪像素 <img src="https://www.example.com/tracking.php?order_id=1" width="100" height="100" />

并在 tracking.php 中

$graphic_http =  'https://www.example.com/GIF-example.gif';

header('Content-Type: image/gif');
readfile( $graphic_http );

在浏览器中打开 tracking.php 文件会打开 gif 图像以供下载。

但是,跟踪像素/跟踪图像不会显示在 Gmail 电子邮件中。只有一个损坏的图像徽标,当我单击显示图像时,此链接已打开

https://ci5.googleusercontent.com/proxy/l2xUKFGnNFKm64zEYmJhOcUmEJm15w9MC1txRRF01tpKlcL3t3O16aMJgbYQkucBySV0xV2T0EsCwikOAC0Z4em6uPzSs38lkHrYBvosRRAk14EfPoEXqC5JdLxRm8ToZmGSQqt_RwHCaBE_3uLgQDVEB05Rdtkq-Xzuw30=s0-d-e1-ft#https://www.example.com/tracking.php?order_id=1

其中声明了 Google 404:

Google 404。这是一个错误。

所请求的URL /代理/ l2xUKFGnNFKm64zEYmJhOcUmEJm15w9MC1txRRF01tpKlcL3t3O16aMJgbYQkucBySV0xV2T0EsCwikOAC0Z4em6uPzSs38lkHrYBvosRRAk14EfPoEXqC5JdLxRm8ToZmGSQqt_RwHCaBE_3uLgQDVEB05Rdtkq-Xzuw30 = S0-d-E1-英尺未在此服务器上找到。我们知道的就这些。

似乎是Google的代理无法读取php脚本的问题。 tracking.php 和 GIF-example.gif 文件都拥有 775 项权限,并且可以公开访问。

在 Hotmail 上这确实有效,所以这似乎是 Google 代理的问题。

有人知道如何让 Google 代理访问此跟踪像素吗?

【问题讨论】:

    标签: php email proxy gmail event-tracking


    【解决方案1】:

    你所有的头文件都试图强制浏览器下载文件并忽略它的文件类型(因为你从来没有说它是什么文件类型)。对于要在浏览器中显示的图像,您需要设置正确的标题。

    这基本上就是您需要做的所有事情:

    $orderId = isset($_GET['order_id']) ? $_GET['order_id'] : null;
    
    if ($orderId) {
        // Save stuff in your DB or how you want to log it.
    }
    
    header('Content-Type: image/gif');
    echo file_get_contents('/absolute/path/to/image.gif');
    exit; // Not really necessary, but just to make sure there's no more output.
    

    【讨论】:

    • 感谢您的反馈。我实际上有 header('Content-Type: image/gif');在我的代码中,但忘记在问题中添加它。感谢您指出。但是:您建议的解决方案也不起作用。既不是 file_get_contents 也不是 readfile。相同的损坏图像和 google 404 在其代理图像内容上。
    • 如果您创建一个单独的页面并在其上放置相同的<img src="...." /> 标签会发生什么?那它对你有用吗?还是与服务器有关?
    【解决方案2】:

    我找到了答案:问题出在 Google 代理和问号上?在https://www.example.com/tracking.php?order_id=1

    Google 代理地址搞砸了,因为它已经有一个问号并导致 404。

    我使用https://www.example.com/tracking.php/order_id=1 解决了它,然后在 tracking.php 上我没有使用$_GET,而是使用$_SERVER['REQUEST_URI'] 并解析了/order_id= 字符串。

    跟踪像素显示在 Gmail 中,并在 tracking.php 脚本中进行跟踪。

    【讨论】:

    • 我在 Gmail 中发送邮件后的跟踪 URL 如下所示 ci5.googleusercontent.com/proxy/…" alt="" class="CToWUd">。但是 gmail 正在发送 2 个服务器请求,例如 ci5.googleusercontent.com/proxy/…............ 为什么它会在网络请求中删除我的跟踪器 URL?请帮忙
    猜你喜欢
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 2020-04-22
    • 2011-10-30
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    相关资源
    最近更新 更多