这可能有几个原因:
1)您可能没有下载足够的有关 CTCoreMessage 的信息。在发出下载 CTCoreMessages 的请求时,您必须通过指定正确的 fetch 属性来指定您想要的信息。
例如:
[core_folder messagesFromSequenceNumber:from to:to withFetchAttributes: CTFetchAttrEnvelope | CTFetchAttrBodyStructure]
应填充有关附件的信息。
从 IMAP 获取消息时,该命令将准确指定它想要的信息。
您可以通过启用 MailCore Logging 来查看正在获取的内容,如下所示:
MailcoreEnableLogging();
[core_folder messagesFromSequenceNumber:from to:to withFetchAttributes: CTFetchAttrEnvelope | CTFetchAttrBodyStructure];
MailcoreDisableLogging();
您将看到格式的命令
<command number> <UID> <Command> (<requested structure>)
我想你会看到这样的东西:
1 UID FETCH (ENVELOPE)
您应该确保 () 在 BODY 或 BODY[2] 或 RFC822 内,因为它们将包含有关附件的信息。
当您看到实际获取的内容时,您可以阅读 RFC,如果您正在处理邮件核心和 IMAP,那么在时间上进行投资是非常值得的。
2)如果失败,可能您的 CTCoreAccount 和/或 CTCoreFolder 未连接,从而阻止 CTCoreMessage 具有有效的 mailimapsession 并且无法下载附件信息。如果 CTCoreMessage 中的属性不可用,则 libetpan 应根据请求下载它。事实并非表明您的帐户或文件夹可能无效或未连接。