【问题标题】:How to show Embedded image in an HTML email as normal images (PHP)如何将 HTML 电子邮件中的嵌入图像显示为普通图像 (PHP)
【发布时间】:2012-01-25 21:09:35
【问题描述】:

我正在创建一个电子邮件客户端并遇到许多问题。现在我面临的最新问题是在 HTML 电子邮件正文中显示嵌入的图像。

我的电子邮件正文代码如下所示:

<img alt="image001" src="cid:image001.gif@01CCB988.809DD560" id="Picture_x0020_1" />

找到的相关帖子很少,但没什么用。在显示邮件内容时还要寻找其他可能的类似问题。

我正在使用带有 POP3 的 PHP IMAP 来获取邮件。目前使用 gmail 作为邮件服务器。使用 SMTP (PhpMailer) 发送邮件。

提前致谢。

【问题讨论】:

    标签: php html-parsing imap pop3 email-client


    【解决方案1】:

    在 HTML 中,图像是具有特定 URI(由 src="" 属性使用)的独立文档。 在您的 MIME boby 中,此 src 属性指的是相对的 MIME 部分。 因此,您需要将所有 MIME 部分内容写入不同的文件(即 /tmp/[md5_MIME_PART_ID]) 然后使用 CGI 脚本重写电子邮件正文并转发特定的 mime 请求:

    readmail.php

    <?
    if($_GET['mime']) {
      readfile("/tmp/{$_GET['mime']}");
      die;
    }    
    $contents = preg_replace("/sid:/", "readmail.php?mime=$1", $contents);
    echo $contents;
    

    当然,一个合适的数据库系统在这里会更有效率,但这只是一个开始

    【讨论】:

    • 感谢您的回复。我不清楚你解释的答案。在邮件正文中,图像数据在邮件的部分给出,每个部分都用 CID 标识。 HTML 正文在 img src 中使用此 CID 来显示数据。邮件客户端可以阅读并显示此内容。但是基于 POP3 的 imap 邮件客户端如何将此图像数据显示为 HTML 内容中的图像。请向我提出您的想法。
    【解决方案2】:

    你用过吗:

    $mail->AddEmbeddedImage(filename, cid, name);
    //By using this function with this example's value above, results in this code:
    $mail->AddEmbeddedImage('my-photo.jpg', 'my-photo', 'my-photo.jpg ');
    

    如果是,出了什么问题?你为什么不开心。

    请注意,默认情况下,大多数电子邮件客户端不显示嵌入图像,这适用于 Gmail 和 Outlook。你无法规避这一点。它是一种安全/带宽节省功能。用户必须先按“显示图像”才能显示。

    【讨论】:

    • 我没有发送邮件。我正在显示收件箱中的邮件。在我的收件箱中,有几种类型的格式化邮件。一种格式是我提到的嵌入图像。我想在我的在线邮件客户端上显示图像。只需像在 gmail 或其他邮件客户端中查看一样显示邮件正文即可。
    • 您是否有权访问名称为 image001.gif 的图像附件
    • 我可以从附件中获取图片。
    猜你喜欢
    • 2019-02-02
    • 1970-01-01
    • 2020-12-14
    • 2011-09-29
    • 2016-11-06
    • 2010-12-23
    • 2012-03-30
    • 2012-02-06
    • 2011-10-06
    相关资源
    最近更新 更多