4

我正在尝试从mailcore迁移到mailcore2。以前在 mailcore 中,获取正文结构就像[msg fetchBodyStructure]msg 是CTCoreMessage对象一样简单。

使用mailcore2,事情似乎更复杂了。在MCOIMAPSession获取消息正文的文档中,我们有:

MCOIMAPFetchContentOperation * op = 
    [session fetchMessageAttachmentByUIDOperationWithFolder:@"INBOX"
                                                        uid:[message uid]
                                                     partID:"1.2"
                                                   encoding:[part encoding]];
 [op start:^(NSError * error, NSData * partData) {
 }];

我完全不知道这1.2应该指的是什么。作者将用户推荐给RFC 822RFC 2822RFC 5322,但他们都没有对上述问题的直接答案。

有人可以给我看一个获取整个消息正文的简单代码示例吗?

4

2 回答 2

17

我不确定人们为什么使事情复杂化:这就是您使用 MailCore2 获取电子邮件正文的方式:

MCOIMAPSession *session = [[MCOIMAPSession alloc] init];
    [session setHostname:@"imap.gmail.com"];
    [session setPort:993];
    [session setUsername:[UICKeyChainStore stringForKey:@"username"]];
    [session setPassword:[UICKeyChainStore stringForKey:@"password"]];
    [session setConnectionType:MCOConnectionTypeTLS];
    MCOIMAPFetchContentOperation *operation = [session fetchMessageByUIDOperationWithFolder:@"INBOX" uid:message.uid];

    [operation start:^(NSError *error, NSData *data) {
        MCOMessageParser *messageParser = [[MCOMessageParser alloc] initWithData:data];

        NSString *msgHTMLBody = [messageParser htmlBodyRendering];
        [webView loadHTMLString:msgHTMLBody baseURL:nil];
    }];
于 2013-11-19T14:54:35.817 回答
0

您需要 RFC 3501,第 6.4.5 部分 - Fetch Command,特别是BODY[<section>]. 该数字指的是消息的 MIME 结构的段。

例如,如果您的消息 mime 结构如下所示,则常见格式:

multipart/alternative
|- text/plain
\- text/html

部分和子部分递归编号如下:

multipart/alternative (top-level)
|- text/plain (Part 1)
\- text/html (Part 2)

对于更复杂的格式,例如,带有附件:

multipart/mixed (top-level)
|- multipart/alternative (Part 1)
|  |- text/plain (Part 1.1)
|  \- text/html (Part 1.2)
\- image/jpeg (Part 2)

如果您想要完整的消息,部件号通常留空。TEXT或者,如果您想要整个消息,但没有标题,您可以使用。

于 2013-08-03T16:54:48.130 回答