【问题标题】:Detecting Email Clients with Dynamic Image使用动态图像检测电子邮件客户端
【发布时间】:2011-06-05 13:00:36
【问题描述】:

我想知道是否可以为不支持动画 gif 的特定电子邮件客户端提供不同的图像。我知道可以使用 PHP 动态生成图像。

因此,如果在电子邮件客户端发送下载动态图像的请求时可以读取用户代理字符串之类的内容,即<img src="http://myserver.com/someimage.php" />,那么 php 可以向不支持动画 gif 的电子邮件客户端发送不同的图像.

这是否可能,或者是否有类似的解决方法来检测动画 gif 支持并提供替代图像?

【问题讨论】:

    标签: php email detection animated-gif


    【解决方案1】:

    好的,感谢建议图像记录的 ProfitPHP。我想出了以下...

    <?php 
    // Find needle in User Agent Hay Stack
    $useragent = $_SERVER['HTTP_USER_AGENT'];
    $isLotus = strpos($useragent,'Lotus-Notes');
    $isMsoffice = strpos($useragent,'MSOffice');
    
    // Route request to supported image
    if ($isLotus === false && $isMsoffice === false) {
        header('Content-type: image/gif');
        readfile('images/email-announcement_02.gif');
    } else {
        header('Content-type: image/gif');
        readfile('images/noAnim_02.gif');   
    }
    ?>
    

    这将找到不支持 .GIF 动画的 Lotus Notes 或 MS Outlook 版本。您可以将 readfile 更改为您自己的本地文件。

    我已经在 Outlook 2001-2010 和 lotus Notes 6-8 上对此进行了测试,它为适当的版本提供了适当的图像。

    【讨论】:

      【解决方案2】:

      我从未听说过不支持动画 GIF 的电子邮件客户端,除非可能是因为尺寸原因。

      我的理解是,您可以将两种类型的图像放入电子邮件中。第一个是附加图像,您可以在其中将图像与电子邮件一起作为电子邮件的一部分发送。第二个是外部图片,您可以在其中引用网站上的图片。

      我认为您要查看的是发送 MIME 电子邮件。如果你 google php mime 你会想出很多结果。

      基本上,这将允许您根据客户的能力发送一封位于不同部分的电子邮件。根据经验,我发送的 MIME 电子邮件只有 html 和文本。因为有些邮件客户端不接受 html 消息。

      我希望这能给你一些方向。

      【讨论】:

      • Outlook 2007 和 2010 不支持动画 GIF。 (我相信 Lotus Notes 6 或 7 都不会)。
      【解决方案3】:

      开始测试吧。启动一个不支持它的客户端,向自己发送有问题的消息,然后查看 HTTPD 日志。您可能必须根据具体情况编写代码。

      【讨论】:

      • 做过这样的事吗?您是否有资源可供我参考以开始进行用户代理检测?
      • 使您在电子邮件中的图像标签指向yourserver.com/imagelogger.php。在该脚本中,将 $_SERVER 变量记录到日志文件中,看看你得到了什么。您还可以检查 Apache/IIS 日志并通过这种方式获取有关请求的一些信息。
      猜你喜欢
      • 2011-05-04
      • 1970-01-01
      • 2016-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 2010-11-13
      • 2023-03-27
      相关资源
      最近更新 更多