电子邮件通知错误地将附件分配为 multipart/alternative

发送带有附件的电子邮件通知时,生成的多部分 MIME 结构存在格式错误。附件被包含为“替代(alternative)”部分,而非“混合(mixed)”部分。因此,某些电子邮件客户端(如 Thunderbird)不会显示这些附件,因为它们被解释为邮件内容的另一种格式(类似于纯文本与 HTML 之间的关系)。

[以下引用来自针对 Mailer 的几乎完全相同的错误报告,该报告同样依赖 Mail 模块。]

我期望的电子邮件结构如下:

multipart/mixed
  multipart/alternative
    text/plain
    text/html
  application/pdf(即 PDF 附件的情况)

我实际收到的结构:

multipart/alternative
  text/plain
  text/html
  application/pdf(即 PDF 附件的情况)

实际影响:
Thunderbird 会根据用户偏好(纯文本或 HTML)正确渲染邮件正文,但不会将附件显示为附加文件(尽管它确实存在于邮件源代码中,作为一个 base64 编码的数据块)。iOS 邮件客户端则显示空白的邮件正文,仅显示 PDF 附件文件,因为它是最后一个条目,而该邮件客户端似乎只渲染此部分。

针对 Discourse 所依赖的 Mail 模块 存在一些可能相关的错误报告。其中一些报告已关闭,隐含的结论是以特定方式传递各部分即可解决问题。我不确定此处是否属于这种情况,但我上面引用并链接的报告已关联了其中几份报告。

9 个赞

感谢您报告此问题并提供清晰的问题描述!

此问题已在 FIX: Notification emails with attachments are incorrectly structured · discourse/discourse@59578df · GitHub 中修复。

7 个赞

此主题已在 4 天后自动关闭。不再允许新回复。