PHP - 未在Thunderbird中显示的内联图像

时间:2016-11-05 20:27:08

标签: php image email inline thunderbird

我想通过PHP发送内联/嵌入图像(又名cid)的邮件。邮件已成功发送并在Gmail中正确接收。但是,在Thunderbird(Windows的最新版本)中,不显示内嵌/嵌入图像。

我按照this帖子中提供的信息,但它仍然无法正常工作。因此内嵌/嵌入图像显示在Gmail中,但不显示在Thunderbird中。有人知道这个问题吗?

To: example@example.com
Subject: Test
From: noreply@test.com <noreply>
MIME-Version: 1.0
Content-Type: multipart/related; boundary="52cd9ebf4fb8c9b0547e93b82b3f3f6b"

--52cd9ebf4fb8c9b0547e93b82b3f3f6b
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Test mail</title>
    </head>
    <body>
        <img src="cid:myImage" alt="This is a embedded image" />
    </body>
</html>

--52cd9ebf4fb8c9b0547e93b82b3f3f6b
Content-Type: image/jpg; name="myImage.jpg"
Content-Transfer-Encoding: base64
Content-ID: <myImage>
Content-Disposition: inline; filename="myImage.jpg"

[base64 encoded string goes here.]

--52cd9ebf4fb8c9b0547e93b82b3f3f6b--

3 个答案:

答案 0 :(得分:1)

嗯...在RFC 1521中说Content-Type标题的格式是这样的

  

文本的内容类型标题字段的正式语法为
  如下:

     

text-type:=“text”“/”text-subtype [“;” “charset”“=”charset]

     

text-subtype:=“plain”/ extension-token

     

charset:=“us-ascii”/“iso-8859-1”/“iso-8859-2”/“iso-8859-3”             /“iso-8859-4”/“iso-8859-5”/“iso-8859-6”/“iso-8859-7”             /“iso-8859-8”/“iso-8859-9”/ extension-token                       ;不区分大小写

我的意思是内容类型和下一个字符集 但是你把

  

内容类型:image / jpg; NAME = “myImage.jpg” 这个参数

所以......这可能会破坏你的形象...... 另一个建议是将您的内容ID设置为小写而不是驼峰

问候 埃米利亚诺

答案 1 :(得分:1)

我会检查图片扩展名的正确用例。我发现过去,即使图像文件扩展名是.JPG,.jpg也会在很多浏览器中显示...但对于某些浏览器,它会破坏或至少不一致。

对于你来说情况可能并非如此,但值得一试。

答案 2 :(得分:0)

感谢大家的回复。我不确定它,但看起来thunderbird的开发人员在他们的最新版本中做了一个错误修正,因为它现在可以正常工作。如果这是对的,感谢雷鸟的开发者!