你好,这是我在这个网站上的第一篇文章。
现在我遇到了一个奇怪的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我忘了这个,问题是我修复了第一行,长度以字节为单位。抱歉浪费时间:(答案 0 :(得分:0)
您需要摆脱顶级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数据。它可能会以某种方式导致错误,从而妨碍正确解码。你所展示的其他一切都是准确的。