当前位置: 首页 > 面试题库 >

将图像嵌入html电子邮件

秦彦君
2023-03-14
问题内容

我正在尝试发送包含嵌入式gif图像的多部分/相关html电子邮件。该电子邮件是使用Oracle PL /
SQL生成的。我的尝试失败了,图片显示为红色X(在Outlook 2007和yahoo邮件中)

我已经发送HTML电子邮件已有一段时间了,但是我现在的要求是在电子邮件中使用多个gif图像。我可以将它们存储在我们的一台Web服务器上并仅链接到它们,但是许多用户的电子邮件客户端不会自动显示它们,因此需要更改设置或手动为每封电子邮件下载它们。

因此,我的想法是嵌入图像。我的问题是:

  1. 我在这里做错了什么?
  2. 嵌入方法正确吗?
  3. 如果我需要使用越来越多的图像,还有其他选择吗?附件将不起作用,因为图像通常是徽标和图标,它们在邮件的上下文范围内是没有意义的。另外,电子邮件的某些元素是到在线系统的链接,因此生成静态PDF和附加将不起作用(据我所知)。

片段:

MIME-Version: 1.0
To: me@gmail.com
BCC: me@yahoo.com
From: email@yahoo.com
Subject: Test
Reply-To: email@yahoo.com
Content-Type: multipart/related; boundary="a1b2c3d4e3f2g1"

--a1b2c3d4e3f2g1

content-type: text/html;

    <html>
    <head><title>My title</title></head>
    <body>
    <div style="font-size:11pt;font-family:Calibri;">
    <p><IMG SRC="cid:my_logo" alt="Logo"></p>

... more html here ...

</div></body></html>

--a1b2c3d4e3f2g1

Content-Type: image/gif;
Content-ID:<my_logo>
Content-Transfer-Encoding: base64
Content-Disposition: inline

[base64 image data here]

--a1b2c3d4e3f2g1--

非常感谢。

顺便说一句:是的,我已经验证了base64数据是正确的,因为我可以将图像嵌入html本身(使用相同的算法创建标头数据)并在Firefox /IE中查看图像。

我还应注意,这不是针对垃圾邮件的,电子邮件是每天发送给特定客户的。内容是数据驱动的,而不是广告。


问题答案:

尝试直接插入它,这样您可以在电子邮件中的不同位置插入多个图像。

<img src="data:image/jpg;base64,{{base64-data-string here}}" />

并为了使该帖子对其他人有用:如果您没有base64数据字符串,请在以下位置轻松创建一个字符串:。 。

电子邮件源代码看起来像这样,但是我真的无法告诉您该边界对象是什么:

 To: email@email.de
 Subject: ...
 Content-Type: multipart/related;
 boundary="------------090303020209010600070908"

This is a multi-part message in MIME format.
--------------090303020209010600070908
Content-Type: text/html; charset=ISO-8859-15
Content-Transfer-Encoding: 7bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    <img src="cid:part1.06090408.01060107" alt="">
  </body>
</html>

--------------090303020209010600070908
Content-Type: image/png;
 name="moz-screenshot.png"
Content-Transfer-Encoding: base64
Content-ID: <part1.06090408.01060107>
Content-Disposition: inline;
 filename="moz-screenshot.png"

[base64 image data here]

--------------090303020209010600070908--

//编辑:哦,我只是意识到,如果您从我的帖子中插入第一个代码片段来用thunderbird编写电子邮件,那么thunderbird会自动将html代码更改为与我的帖子中的第二个代码几乎相同。



 类似资料:
  • 问题内容: 我目前有一个程序,可以从列表中随机选择引号并通过电子邮件发送。我现在也尝试在电子邮件中嵌入图片。我遇到了一个问题,可以附加电子邮件,但报价不再起作用。我已经在网上进行了研究,但解决方案对我不起作用。请注意,我使用的是Python 3.2.2。 任何指导将不胜感激。 从上面的代码可以看出,我尝试了不同的方法(引用#) 问题答案: 您正在费力地在中构造有效的MIME消息,然后放弃它并发送一

  • 问题内容: 我可以使用msdb.dbo.sp_send_dbmail以html格式发送电子邮件。仅在格式方面对文本非常好。例如: 但是,如果要包括从SQL服务器上的数据生成的趋势之类的图像并将其嵌入html(@emailHTML)中,应该使用哪个html标签? 如果使用[img]标记,则需要设置src属性。生成的图像保存在本地SQL Server的硬盘中。我可以将它们放在IS服务器网页区域中。但是

  • 问题内容: 我需要在电子邮件中嵌入图像。我该怎么做? 我既不想使用第三方工具,也不想对特定于语言的答案感兴趣(但是如果您想知道的话,它就是PHP)。 我只对生成的电子邮件正文的格式感兴趣。 问题答案: 如您所知,作为电子邮件传递的所有内容都必须文本化。 您必须创建包含多部分/ mime消息的电子邮件。 如果要添加物理图像,则该图像必须使用base 64编码并分配了Content-ID(cid)。如

  • 我目前正在使用yagmail模块使用Python发送电子邮件,并且我很难将本地存储的图像嵌入到电子邮件中。这可能吗? 下面是一个代码示例: 使用上面的代码示例,如果我输入一个外部路径(例如,imgur图像或谷歌图像),它完美地工作,把我似乎无法得到一个本地路径识别。 解决方案不必使用yagmail,它似乎是我迄今为止使用的最简单的电子邮件模块。 谢谢你的帮助!

  • 问题内容: 我正在尝试使用图像发送带有PHPMailer的HTML邮件。正文是从包含所有信息的html文件加载的。 发送邮件时,尽管我什至也将图像作为附件发送,但图像并未出现在正文中。 HTML 标记指向与该位置相同的位置。 PHP: 如何使html指向附件,以便可以将图像加载到正文中。 查看PHPMailer附带的示例,我没有发现任何区别,在这种情况下,确实出现了图像。 问题答案: 我找到了答案

  • 我正在尝试在电子邮件中嵌入一个图像。我遵循了这里,这里和这里的例子和其他但我不能得到图像显示。 当我执行这个时,我得到的是一个空空如也的身体,里面有一个红十字,没有任何图像。如何使图像与电子邮件正文内联显示? 我正在使用Outlook 2016。我知道我可以在使用Outlook时插入图片,我也收到过别人在文本中插入图片的“正常”电子邮件,所以这肯定意味着我必须能够查看python脚本生成的图片?