【问题标题】:Tracking email opens with a real image跟踪电子邮件以真实图像打开
【发布时间】:2012-12-09 15:10:21
【问题描述】:

我正在考虑将电子邮件跟踪添加到我为小型客户企业构建的 Web 服务中。我正计划做嵌入式图像解决方案(参考我服务器上的图像)-除非其他人有更好的方法-但是 当我使用引用服务器上 PHP 页面的图像标记时,它会加载“损坏图像”图标。我怎样才能使它成为有效的图像?

这是邮件PHP页面的代码:

<?php
   $body = "<html>Hello there!".
    "<img src='http://mysite.com/track.php?name=bob' />".
    "</html>";

    $subject = "Tracking on ".date('Y-m-d H:i:s');

    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $headers .= 'From: webmaster@mysite.com' . "\r\n";

    mail('my_email@gmail.com',$subject,$body,$headers);
?>

这是跟踪代码:

<?php
   include('database_connection.php');
   $query = "INSERT INTO tracking SET name='".$_GET['name']."', date=NOW()";
   mysql_query($query);

   // Tried this, but it doesn't work:
   echo "<img src='http://mysite.com/photos/image.jpg'>";
?>

【问题讨论】:

    标签: php image email tracking


    【解决方案1】:

    如果您要使用这样的 PHP 脚本,它需要返回图像 data,而不仅仅是 HTML 图像标签。最简单的方法是:

    <?php
    header("Content-Type: image/jpeg");
    readfile("image.jpeg");
    
    do_all_your_tracking_stuff();
    

    请注意,这是首先返回图像数据,以便邮件客户端可以立即开始显示它,而不是等待您的 SQL 查询完成。

    【讨论】:

    • 所有这些行都会进入track.php 文件吗? @duskwuff
    【解决方案2】:

    简单的谷歌搜索就可以了...

    header('Content-Type: image/jpeg');
    readfile('path');
    

    你真的只需要使用你的直觉:你在图像标签中链接到什么?您链接到图像源。实际的图像文件。你在代码中做什么?将 HTML 代码与另一个图像源相呼应。但是客户端浏览器期待的是一张图片,而不是更多的 HTML 代码。

    【讨论】:

    • 我试过谷歌...你用的是什么词组?还有,这去哪儿了?
    • “PHP 输出图像”。标头在您向用户发送任何数据之前。 readfile 基本上将文件输出到浏览器(同样&lt;img src="something.php" /&gt; 源链接应该是图像文件。readfile 将文件内容“打印”到浏览器)。 readfile 的去向并不重要,但从技术上讲,您应该先发送数据,以便客户端可以加载它(例如,如果可能,脚本标签最好放在正文之后)
    猜你喜欢
    • 2018-09-19
    • 2013-04-06
    • 2011-10-07
    • 1970-01-01
    • 2010-11-01
    • 2017-03-30
    • 2019-03-09
    • 1970-01-01
    • 2012-06-28
    相关资源
    最近更新 更多