我尝试从mailcore迁移到mailcore2。以前在mailcore中,获取正文结构就像[msg fetchBodyStructure]
一样简单,其中msg是CTCoreMessage对象。
使用mailcore2,事情似乎更复杂。在用于获取邮件正文的MCOIMAPSession's文档中,我们有:
MCOIMAPFetchContentOperation * op =
[session fetchMessageAttachmentByUIDOperationWithFolder:@"INBOX"
uid:[message uid]
partID:"1.2"
encoding:[part encoding]];
[op start:^(NSError * error, NSData * partData) {
}];
我完全不知道这个1.2
应该引用什么。作者将用户引荐至RFC 822,RFC 2822和RFC 5322,但他们都没有直接回答上述问题。
有人可以向我展示一个获取整个邮件正文的简单代码示例吗?
答案 0 :(得分: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];
}];
答案 1 :(得分:0)
您需要RFC 3501,第6.4.5部分 - 获取命令,特别是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
。