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

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

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

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

皮埃尔

【问题讨论】:

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

标签: language-agnostic image email mime encapsulation


【解决方案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 和纯文本的相同文本。

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

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

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

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

【讨论】:

  • Pawel,如果我能给你投票 10K 次,我会这样做。非常感谢这个明亮的解释。 (当我获得 15 分时,我会以你应得的方式感谢你)
猜你喜欢
  • 2016-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-09
  • 2012-05-01
相关资源
最近更新 更多