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-Version
和 Content-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附件的电子邮件