现在的位置: 首页 > 综合 > 正文

MailCore2 SDK API

2018年05月12日 ⁄ 综合 ⁄ 共 5523字 ⁄ 字号 评论关闭

 声明:由于MailCore2 SDK API众多,所以将从功能使用的角度以及结合项目来阐述。

 

 1  
邮件账户方面:我们需要验证账户,验证通过,则把该账户保存下来。

 邮件接收分IMAPPOP协议。

 

 checkAccountOperation

 

 

 -       (MCOSMTPOperation *) checkAccountOperationWithFrom:(MCOAddress *)from;

 -

 2  
验证账户后,我们首先就是要获取文件夹信息,

 MCOIMAPFolderInfoOperationAPI用来获取邮件文件夹的信息。­­­­

 

 -       (MCOIMAPFolderInfoOperation *) folderInfoOperation:(NSString *)folder;

 

 

 -       (void) start:(void (^)(NSError * error, MCOIMAPFolderInfo * info))

 completionBlock;

 

 

 

 fetchAllFoldersOperation

 

 

 - (void) start:(void (^)(NSError * error, NSArray * folders))completionBlock;

 

 

 - (MCOIMAPFolderStatusOperation *) folderStatusOperation:(NSString *)folder;

 

 

 -       (void) start:(void (^)(NSError * error, MCOIMAPFolderStatus * status))

 completionBlock;

 

 3IMAP API

 

 MCOIMAPSession类基本属性和常用API

 

 @property (nonatomic, copy) NSString *hostname;

 

 

 @property (nonatomic, assign) unsigned int port;

 

 

 @property (nonatomic, copy) NSString *username;

 

 

 @property (nonatomic, copy) NSString *password;

 

 

 @property (nonatomic, copy) NSString *OAuth2Token;

 

 

 @property (nonatomic, assign) MCOAuthType authType;

 

 

 @property (nonatomic, assign) MCOConnectionType connectionType;

 

 - (MCOIMAPFetchFoldersOperation *) fetchSubscribedFoldersOperation;

 

 

 

 -       (MCOIMAPOperation *) renameFolderOperation:(NSString *)folder otherName:(NSString *)otherName

 

 

 

 -       (MCOIMAPOperation *) deleteFolderOperation:(NSString *)folder

 

 

 -       (MCOIMAPOperation *) createFolderOperation:(NSString *)folder

 -

 

 - (MCOIMAPOperation *) subscribeFolderOperation:(NSString *)folder;

 

 

 

 

 

 

 

 - (MCOIMAPOperation *) expungeOperation:(NSString *)folder;

 

 

 -       (MCOIMAPOperation *) unsubscribeFolderOperation:(NSString *)folder;

 

 

 -       (MCOIMAPOperation *) expungeOperation:(NSString *)folder;

 

 

 

 - (MCOIMAPAppendMessageOperation

 *)appendMessageOperationWithFolder:(NSString *)folder

 messageData:(NSData *)messageData

 flags:(MCOMessageFlag)flags;

 

 

 -           (MCOIMAPCopyMessagesOperation *)copyMessagesOperationWithFolder:(NSString *)folder                                                        uids:(MCOIndexSet *)uids                                                       destFolder:(NSString
*)destFolder

 

 

 - (MCOIMAPOperation *) storeFlagsOperationWithFolder:(NSString *)folder

 uids:(MCOIndexSet *)uids

 kind:(MCOIMAPStoreFlagsRequestKind)kind

 flags:(MCOMessageFlag)flags;

 

 

 

 - (MCOIMAPOperation *) storeLabelsOperationWithFolder:(NSString *)folder

 uids:(MCOIndexSet *)uids

 kind:(MCOIMAPStoreFlagsRequestKind)kind

 labels:(NSArray *)labels;

 

 

 

 -       (MCOIMAPFetchMessagesOperation *)

 fetchMessagesByUIDOperationWithFolder:(NSString *)folder

 requestKind:(MCOIMAPMessagesRequestKind)requestKind

 uids:(MCOIndexSet *)uids;

 

 

 -       (MCOIMAPFetchMessagesOperation *)

 fetchMessagesByNumberOperationWithFolder:(NSString *)folder

 requestKind:(MCOIMAPMessagesRequestKind)requestKind

 numbers:(MCOIndexSet *)numbers;

 

 

 

 -       (MCOIMAPFetchContentOperation *)

 fetchMessageByUIDOperationWithFolder:(NSString *)folder

 uid:(uint32_t)uid

 urgent:(BOOL)urgent;

 

 

 

 -          (MCOIMAPFetchContentOperation *) fetchMessageAttachmentByUIDOperationWithFolder:(NSString *)folder                                                                              uid:(uint32_t)uid                                      
                                    partID:(NSString *)partID                                                                        encoding:(MCOEncoding)encoding                                                                           urgent:(BOOL)urgent;

 

 

 

 -       (MCOIMAPSearchOperation *) searchOperationWithFolder:(NSString *)folder                                                  kind:(MCOIMAPSearchKind)kind                                          searchString:(NSString *)searchString;

 

 

 

 

 -       (MCOIMAPSearchOperation *)

 searchExpressionOperationWithFolder:(NSString *)folder

 expression:(MCOIMAPSearchExpression *)expression;

 

 

 

 -       (MCOIMAPMessageRenderingOperation *)

 htmlRenderingOperationWithMessage:(MCOIMAPMessage *)message

 folder:(NSString *)folder;

 

 

 

 -       (MCOIMAPMessageRenderingOperation *)

 htmlBodyRenderingOperationWithMessage:(MCOIMAPMessage *)message

 folder:(NSString *)folder;

 

 

 

 -       (MCOIMAPMessageRenderingOperation *)

 plainTextRenderingOperationWithMessage:(MCOIMAPMessage *)message                                                                       folder:(NSString *)folder;

 

 

 - (MCOIMAPMessageRenderingOperation *) plainTextBodyRenderingOperationWithMessage:(MCOIMAPMessage *)message

 folder:(NSString *)folder;

 

 3   SMTP API

 其基本属性和POP以及IMAP差不多,其主要功能是用来发送邮件。

 

 

 -       (MCOSMTPSendOperation *) sendOperationWithData:(NSData *)messageData;

 

 

 

 

 

 

 - (MCOSMTPSendOperation *) sendOperationWithData:(NSData *)messageData

 from:(MCOAddress *)from

 recipients:(NSArray *)recipients;

 4   POP API

 Pop会话的基本属性和IMAP类似,但请求有所变化,与IMAP有诸多不同。

 

 

 -       (MCOPOPFetchMessagesOperation *) fetchMessagesOperation;

 

 

 -        (MCOPOPFetchHeaderOperation *)

 fetchHeaderOperationWithIndex:(unsigned int)index;

 

 -        (MCOPOPFetchMessageOperation *)

 fetchMessageOperationWithIndex:(unsigned int)index;

 

 

 

 - (MCOPOPOperation *)

 deleteMessagesOperationWithIndexes:(MCOIndexSet *)indexes;

 

 

 -        (MCOPOPOperation *) disconnectOperation

 

 邮件列表加载函数调用顺序说明:

 加载masterViewController后,开始加载邮件

 

 调用:

 -(void)loadEmail

 

 loadEmail中,为了展示效果,首先从数据库加载邮件,调用:

 -       (void)loadEmailsWithCache:(BOOL)allowed,

 

 然后执行新的邮件检测,调用:

 - (void)checkNewEmailShouldSynchnize

 而在这个函数中,我们要将上一次的邮件最大UID(已经缓存)和这一次的邮件最大UID做对比,如果存在差值,则证明有新邮件需要同步,否则直接返回,这样加快速度。

 我们不知道哪些邮件需要同步,但我们肯定的是没有邮件概要的需要我们去同步,所以,当上面的提到的差值大于0时,那么我们得重新获取列表。拿到的就是最新的20封头,我们会去检测哪些是没有缓存的,这二十封邮件都要检测,是为了防止上次同步失败,当我们获得这个需要同步的邮件队列后,用GCD开启异步线程去加载邮件内容即调用:

 -       (void)asynchronousDownloadAllMessagesContent:(NSArray*)filteredMessages

 然后异步加载邮件body,调用:

 -       (void)downloadAllMeasseagesContentByMessages:(NSArray *)filteredMessages

 AndFinishBlock:(ComplishBlock)finishBlock andIndex:(NSInteger)index

 获取完成后,发送通知给Cell,由于cell携带email数据模型,对比下uid即可达到指定更新body的效果。

 当所有需要同步的邮件完成UI更新时(cellbody变化),将此邮件列表交由后台处理,保存到数据库,这样FMDB不会占用主线程,所以邮件同步管理类调用:

 //本地同步邮件列表数据数据到数据库

 -(void)synEmailToDB

【上篇】
【下篇】

抱歉!评论已关闭.