【问题标题】:MIME mail is not showing some pdf and .doc attachmentsMIME 邮件未显示某些 pdf 和 .doc 附件
【发布时间】: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 文档,但我似乎无法找到解决方案。 谁能给我一些提示或建议?

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

【问题讨论】:

    标签: attachment 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 数据和文件名。
    • 我将所有正文替换为(这是一个随机正文)并且文件现在正在显示,我在正文中有错误。一旦我确定它是什么,我就会发布解决方案。
    猜你喜欢
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2015-09-02
    • 1970-01-01
    • 2017-02-19
    相关资源
    最近更新 更多