MIME 邮件未显示某些 pdf 和 .doc 附件

Posted

技术标签:

【中文标题】MIME 邮件未显示某些 pdf 和 .doc 附件【英文标题】:MIME mail is not showing some pdf and .doc attachments 【发布时间】:2014-07-21 05:05:34 【问题描述】:

你好,这是我在这个网站上的第一篇文章。

现在我遇到了一个奇怪的 MIME 问题。我正在编写 emlx 邮件文件。 (目标 c,可可) 现在我在邮件中显示图像没有问题。问题是我一半的 .doc 和 pdf 附件没有显示在邮件中。

格式示例。

MessageLength in Bytes(i.e 8556)

From: some@email
To: some@email2
Subject: mailsubject
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="somerandomgeneratedstring"

--somerandomgeneratedstring
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

Body Text(not html body)

--somerandomgeneratedstring
Content-Type: application/msword; name="somefile.doc"
Content-Disposition: attachment; filename="somefile.doc"
Content-Transfer-Encoding: base64

[base64 encoded data]

--somerandomgeneratedstring--

PlistStructure

文本正文始终正确显示。问题是某些文本文件附件(如 .doc 和 pdf)没有显示,我为多个文本文件运行相同的代码,有些工作但有些不工作,我不知道为什么。所有图片都有效。 我不明白的是,如果我使用对 MIME 不起作用的相同数据并将其作为文件写入我的桌面,则该文件将正确显示。

我有什么遗漏吗?在 base64 中编码此类文件时,我需要注意什么吗?如果是这样,为什么有些文件有效而其他文件无效?(源是二进制格式,我编码在 Xcode 中使用 nsdata base64encoding) 我已经多次阅读 mime 文档,但我似乎无法找到解决方案。 谁能给我一些提示或建议?

编辑:天哪,我忘记了这一点,问题是我在修复它的工作后第一行有问题,长度以字节为单位。抱歉浪费时间:(

【问题讨论】:

【参考方案1】:

您需要删除*** MIME-VersionContent-Type 标题之间的空白行。 MIME 标头和正文由空行分隔,因此您的 Content-Type 被有效地忽略为标头并被视为正文内容。

From: some@email
To: some@email2
Subject: mailsubject
MIME-Version: 1.0
                    <-- get rid of this blank line
Content-Type: multipart/mixed; boundary="somerandomgeneratedstring"

更新:由于这个问题不再是一个因素,因此您尚未显示的唯一剩余因素是实际的 base64 数据。它可能以某种方式格式不正确,从而妨碍了正确解码。您显示的其他所有内容都是准确的。

【讨论】:

对不起,我在这里写错了,我的代码中没有空行。错误不是我在格式化。它将显示一些 .doc 文件,但不显示其他文件,唯一的区别在于 base64 endded 数据和文件名。 我将所有正文替换为(这是一个随机正文)并且文件现在正在显示,我在正文中有错误。一旦我确定它是什么,我就会发布解决方案。

以上是关于MIME 邮件未显示某些 pdf 和 .doc 附件的主要内容,如果未能解决你的问题,请参考以下文章

无法在python中使用MIME发送带有pdf附件的电子邮件

Mime 和 Office365

HTML 图像未显示在通过 VBA 中的 Gmail API 发送的 MIME 消息中,使用 3D

带有附件问题的 PHP Pear Mime 邮件

在 mime smtp 中添加 pdf 的附件

PHP pdf 电子邮件附件,内容类型:多部分/混合,html 消息未显示