MailCore2 - 在不下载图像或附件的情况下获取邮件内容?

Posted

技术标签:

【中文标题】MailCore2 - 在不下载图像或附件的情况下获取邮件内容?【英文标题】:MailCore2 - Fetch message content without downloading images or attachments? 【发布时间】:2015-06-20 10:41:04 【问题描述】:

我想提供用户消息的预览,但我不希望为此下载附件。

我需要的信息是:

主题 日期 发件人信息(显示名称(如果有),电子邮件地址) 纯文本消息

通过使用请求类型MCOIMAPMessagesRequestKindHeaders 调用方法fetchMessagesByNumberOperationWithFolder:,我得到了日期和主题,但是如果任何消息有附件,返回就会很慢。通过使用请求类型MCOIMAPMessagesRequestKindUid 调用它,它会很快返回,只有Uid(和当前日期,作为占位符)。从那里,我仍然需要获取主题、日期和发件人。

现在我仍在尝试获取此信息,同时避免下载邮件附件。

调用fetchParsedMessageOperationWithFolder:fetchMessageOperationWithFolder:都会下载带附件的消息,因此返回很慢。

因为fetchMessageOperationWithFolder:NSData 对象结尾,所以检查给定对象的大小会发现它与普通邮件的大小加上其附件一样大。

如何在不下载任何附件的情况下获取所需信息?

编辑:调用requiredPartsForRendering 可以给我电子邮件的内容,但为了检索日期和发件人信息,我仍然需要有MCOIMAPMessagesRequestKindHeaders 的请求类型,它会下载附件。

所以澄清一下:

我想从 IMAP 电子邮件中获取以下信息,而不下载电子邮件附件:

主题 日期 发件人信息(显示名称(如果有),电子邮件地址) 纯文本消息

【问题讨论】:

【参考方案1】:

以下方法应该对你有帮助:

-[MCOAbstractMessage requiredPartsForRendering] 将返回您需要获取的消息部分,以便能够显示消息的文本内容。

-[MCOIMAPSession fetchMessageAttachmentOperationWithFolder:uid:partID:encoding:] 将帮助您获取这些部分。

-[MCOIMAPMessage htmlRenderingWithFolder:delegate:] 将以 HTML 格式返回呈现的内容(如果您不通过委托提供部件的所有内容,则返回 nil。

-[NSString mco_flattenHTML] 如果您想将 HTML 转换为未格式化的字符串,也很有用。

【讨论】:

我还发现- [MCOIMAPSession plainTextBodyRenderingOperationWithMessage: folder:] 可用于提供消息的简短预览。 我重写了我的问题以进行澄清。我不认为你给我的信息能解决我的问题。 我认为您对问题的重写+我给出的答案完全解决了您的担忧。 @DinhViêtHoà 您建议我使用哪种或哪些方法来获取邮件的主题和日期,而无需下载附件? fetchMessageAttachmentOperation 只会给我内容,MCOIMAPMessagesRequestKindHeaders 会下载附件。 MCOIMAPMessagesRequestKindHeaders 不会下载附件。

以上是关于MailCore2 - 在不下载图像或附件的情况下获取邮件内容?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不下载 Java 的情况下获取网站图像的尺寸?

如何在不重新保存的情况下从 iCloud 下载图像?

在不物理断开的情况下断开外部附件

如何在不模糊或使用毕加索的情况下调整图像大小

如何在不破坏图像纵横比的情况下调整 QImage 或 QML 图像的大小以适应父容器

如何在不加载图像的情况下为文件系统上的现有图像写入或修改 EXIF 数据?