如何将图像文件封装到电子邮件中?

Posted

技术标签:

【中文标题】如何将图像文件封装到电子邮件中?【英文标题】:How to encapsulate image files into emails? 【发布时间】:2011-01-09 13:47:05 【问题描述】:

有人可以解释一下如何使用嵌入的图像文件创建“简单”的电子邮件吗? 我知道有大量的 RFC 解释它,但我并没有真正成功地做到这一点。 我必须以编程方式构建电子邮件的正文,而不使用任何框架。不要问我使用的语言...

图像采用 base64 编码。 内容类型:多部分/相关;边界="boundary-example-1";type=文本/html

如果在我没有找到的某个网站上有关于如何执行此操作的“可读”说明,我会很高兴听到的。

皮埃尔

【问题讨论】:

您是否尝试向自己发送带有嵌入图像的邮件并检查电子邮件的来源? 当然!大量的电子邮件。但是我没有成功让它们在电子邮件客户端中看起来不错(Thundebird 工作正常,但 Outlook 不行)。我想我没有正确构建正文和标题,Thunderbird 为我纠正了这个...... 【参考方案1】:

有大量的 RFC,因为它不是那么简单。

在电子邮件中嵌入图像和/或附件,创建了 MIME 格式。

MIME 实际上是一个树形结构:

+-multipart/mixed
  +-multipart/related
  | +-multipart/alternative
  | |  +-text/plain
  | |  +-text/html
  | +-image/gif
  | +-image/jpeg
  +-application/x-zip-compressed
  +-application/x-zip-compressed

每个多部分 mime 对象都由一个或多个部分组成。 部分使用边界分隔符分隔。

多部分/混合 - 当部分不相关时使用(带有附件的常规电子邮件)

多部分/相关 - 当 pars 相关时使用。 例如,包含此 HTML 使用的图像的 HTML 电子邮件。 (html中使用了cid协议:)

多部分/替代 - 指定部分包含相同的内容但具有不同的表示。 例如 doc 格式、html 和纯文本的相同文本。

    所以首先你需要建立正确的mime结构, 然后使用适当的编码(Base64、QuotedPrintable)对所有 mime 部分进行编码, 为所有部分添加正确的标题, 如果它们包含国家或特殊字符,则对其进行编码, 分配边界 最后渲染整个消息

重点是这个问题已经解决了。大多数语言都有创建和发送电子邮件的库。

.NET 框架有一个,并不完美,但仍然可能比您创建的更好。

如果您需要更多地控制电子邮件的外观,还可以查看 Mail.dll email component 等商业产品。

【讨论】:

Pawel,如果我能给你投票 10K 次,我会这样做。非常感谢这个明亮的解释。 (当我获得 15 分时,我会以你应得的方式感谢你)

以上是关于如何将图像文件封装到电子邮件中?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用php邮件附加图像文件

如何使用 javamail 将 base64 图像嵌入到电子邮件中

如何将图像添加到电子邮件行为

如何将 HighCharts 图像保存到 PHP 中的项目文件夹中?

如何在邮件Laravel中存储图像

如何在 App 中将 ImageView 中的图像附加到电子邮件