如何确保 HTML 电子邮件中嵌入的图像显示出来?

Posted

技术标签:

【中文标题】如何确保 HTML 电子邮件中嵌入的图像显示出来?【英文标题】:How to ensure that images embedded in HTML emails show up? 【发布时间】:2012-02-06 22:07:02 【问题描述】:

我必须发送一封包含图片和一些文字的电子邮件。我已经可以发送 html 电子邮件,附上带有 Content-ID: <Picture.jpg> 的图片,然后将其引用为 <img src="cid:Picture.jpg" alt="" />。可爱。

问题 - 许多邮件客户端默认不显示它。例如,默认情况下,GMail 仅显示来自您至少发送过两封电子邮件的发件人的图片。我不知道Mozilla Thunderbird,但从客户的投诉来看,它做了类似的事情——图片显示为附件,并没有出现在电子邮件正文中。

我做错了什么/可以做得更好?

这是一封[censored] 的电子邮件副本:

Delivered-To: [censored]
Received: by 10.204.187.8 with SMTP id cu8cs411179bkb;
        Wed, 4 Jan 2012 05:36:05 -0800 (PST)
Received: by 10.152.106.45 with SMTP id gr13mr25346083lab.9.1325684164222;
        Wed, 04 Jan 2012 05:36:04 -0800 (PST)
Return-Path: <[censored]>
Received: from [censored] ([censored]. [[censored]])
        by mx.google.com with ESMTPS id nq10si44421925lab.26.2012.01.04.05.36.03
        (version=TLSv1/SSLv3 cipher=OTHER);
        Wed, 04 Jan 2012 05:36:03 -0800 (PST)
Received-SPF: pass (google.com: best guess record for domain of [censored] designates [censored] as permitted sender) client-ip=[censored];
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of [censored] designates [censored] as permitted sender) smtp.mail=[censored]
Received: from [censored] ([censored]) by [censored] ([censored]) with
 Microsoft SMTP Server id 8.1.436.0; Wed, 4 Jan 2012 15:36:03 +0200
MIME-Version: 1.0
From: [censored]
To: [censored]
Date: Wed, 4 Jan 2012 15:36:02 +0200
Subject: Test
Content-Type: multipart/mixed;
    boundary="--boundary_1_5d3b21f4-0e5d-4727-a2a2-a49bb2ad5062"
Message-ID: <e42be75d-53b2-46c7-a1c6-150c95b86ba6@[censored]>
Return-Path: [censored]

----boundary_1_5d3b21f4-0e5d-4727-a2a2-a49bb2ad5062
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: base64

[snip base64 encoded HTML]
----boundary_1_5d3b21f4-0e5d-4727-a2a2-a49bb2ad5062
Content-Type: image/jpeg; name="Picture.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment
Content-ID: <Picture.jpg>

[snip base64 encoded JPEG]
----boundary_1_5d3b21f4-0e5d-4727-a2a2-a49bb2ad5062--

补充说:对于反对者 - 虽然我确实看到了这个问题的滥用可能性,但事实是这是来自合法场景。我正在为一家办公文具供应商创建一个网络购物网站。客户希望产品页面中有一个“发送到电子邮件”按钮,以便访问者可以将有趣的产品描述发送给他们的朋友/老板/任何人。我正在尝试在电子邮件中包含产品图片。客户抱怨图片未显示。

【问题讨论】:

嘿,反对票是怎么回事? 你不能重写每一个 MUA。您需要找到让 MUA 信任您的电子邮件地址的方法(例如,发回电子邮件以获取代金券)和/或找到解决问题的其他方法。你的客户不讲理。如果他们认为这是可能的,请他们证明这一点 - 即向您展示解决问题的电子邮件示例。 我们还没有走到那一步,到目前为止,她的大部分时间都是合理的。我只是想知道是否没有我错过的东西。毕竟,这是我第一次使用嵌入图片的电子邮件。 【参考方案1】:

复制自this answer:

Content-ID 标头的值应该在same format as a message-id 中,而looks very much like an email address 又是looks very much like an email address。 &lt;Picture.jpg@yourmailer&gt; 有更好的机会与大多数邮寄者合作。

【讨论】:

【参考方案2】:

大多数电子邮件客户端将始终隐藏 html 电子邮件正文中的图像,除非它是从受信任的发件人发送的。想一想,如果某个垃圾邮件网站向您发送了不合适的图片,您是否希望它们在您打开电子邮件时弹出?

您唯一能做的就是要求收件人选择电子邮件上的选项以始终显示来自该发件人的图像。此外,根据我的经验,图像通常不会作为电子邮件附件发送,而是图像标签指向发件人托管的图像。

【讨论】:

这是我选择嵌入它的原因之一 - 这样就有更大的机会显示图像。【参考方案3】:

我认为您不能强制电子邮件客户端以某种方式显示电子邮件。想想这会带来哪些安全问题! 也许您可以在客户的客户端中找到要配置的选项并推荐给他。

【讨论】:

如果图片是嵌入的,我想不出有什么安全问题。链接的图片,是的。 正如 Danny 所说,您不希望默认显示不合适的图片……这对我来说本身就是一个“安全问题”。也许我对“安全”的定义有点不同:) 无论如何——重点是:我也是;我想不出一种方法来强制世界上所有支持 HTML 的邮件客户端显示(嵌入的)图片。 大多数大型的,如 GMail 和 Thunderbird,客户端用于测试。 :P 如前所述,我不相信(尽管我承认不知道)如果用户没有在客户端进行一些配置,这根本不可能。但我会记住的...... 也许不是。我不知道。这就是我问的原因。这是我第一次尝试嵌入图片的电子邮件。

以上是关于如何确保 HTML 电子邮件中嵌入的图像显示出来?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 HTML 电子邮件中嵌入图像? [复制]

Thunderbird 不显示电子邮件中的嵌入图像 [重复]

Python - 使用嵌入图像向 GMAIL 发送邮件

在 html 电子邮件中嵌入图像

如何在 .NET HTML 邮件消息中嵌入图像?

如何在 iOS 中将图像嵌入到电子邮件的 HTML 正文中