MailCore2,只获取未读消息,或者知道哪些是未读消息

Posted

技术标签:

【中文标题】MailCore2,只获取未读消息,或者知道哪些是未读消息【英文标题】:MailCore2, fetch only UNREAD messages, or know which ones are UNREAD 【发布时间】:2013-10-04 22:44:21 【问题描述】:

我可以使用fetchMessagesByUIDOperationWithFolder: 获取所有消息,但是,当一些消息未读、大部分已读且一些已加星标时,message.flags 全部返回 0。

MCOIMAPMessagesRequestKind requestKind = MCOIMAPMessagesRequestKindHeaders;
NSString *folder = @"INBOX";
MCOIndexSet *uids = [MCOIndexSet indexSetWithRange:MCORangeMake(1, UINT64_MAX)];

MCOIMAPFetchMessagesOperation *fetchOperation = [session fetchMessagesByUIDOperationWithFolder:folder requestKind:requestKind uids:uids];
[fetchOperation start:^(NSError * error, NSArray * fetchedMessages, MCOIndexSet * vanishedMessages)

    if ( ! error )  
        for ( MCOIMAPMessage * message_ in fetchedMessages )  
           // I only want UNREAD messages.
        
    

我尝试过使用if ( message_.flags & MCOMessageFlagSeen ),但仍然所有标志都返回为0

查看消息是否未读的正确方法是什么?

【问题讨论】:

【参考方案1】:

对于遇到相同问题的任何人,您还需要包括对标志的友好请求:MCOIMAPMessagesRequestKindFlags

MCOIMAPMessagesRequestKind requestKind = MCOIMAPMessagesRequestKindHeaders|MCOIMAPMessagesRequestKindFlags;

然后,寻找未读标志:

for ( MCOIMAPMessage * message_ in fetchedMessages )  
    if ( message_.flags == 0 ) 
        // I have a suspicion that this is not the correct
        // way to do this, but it seems to work the way I need.
    

【讨论】:

【参考方案2】:

您可以使用 0 或更好的值,如下所示,这也是 0,但谁知道他们是否决定稍后将其更改为其他值:

if(message_.flags == MCOMessageFlagNone)

【讨论】:

以上是关于MailCore2,只获取未读消息,或者知道哪些是未读消息的主要内容,如果未能解决你的问题,请参考以下文章

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

如何在mailcore2中获取电子邮件正文

从 PubNub 获取未读消息并呈现通知

仅从 QuickBlox 获取未读消息?

如何使用 Graph API 获取未读消息?

通过 Mailcore 2 获取 Gmail:线程 ID、消息 ID 和 UID