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

时间:2014-05-31 15:05:23

标签: attachment mime

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

现在我遇到了一个奇怪的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文档,我似乎无法找到解决方案。 有人可以给我一些提示或建议吗?

编辑:omg我忘了这个,问题是我修复了第一行,长度以字节为单位。抱歉浪费时间:(

1 个答案:

答案 0 :(得分:0)

您需要摆脱顶级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数据。它可能会以某种方式导致错误,从而妨碍正确解码。你所展示的其他一切都是准确的。