如何将图像文件封装到电子邮件中?
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 分时,我会以你应得的方式感谢你)以上是关于如何将图像文件封装到电子邮件中?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 javamail 将 base64 图像嵌入到电子邮件中