MailCore2 SDK API
声明:由于MailCore2 SDK API众多,所以将从功能使用的角度以及结合项目来阐述。
(1) 邮件账户方面:我们需要验证账户,验证通过,则把该账户保存下来。
邮件接收分IMAP和POP协议。
checkAccountOperation
- (MCOSMTPOperation *) checkAccountOperationWithFrom:(MCOAddress *)from;
-
(2) 验证账户后,我们首先就是要获取文件夹信息,
MCOIMAPFolderInfoOperation类API用来获取邮件文件夹的信息。
- (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;
(3)IMAP 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更新时(cell上body变化),将此邮件列表交由后台处理,保存到数据库,这样FMDB不会占用主线程,所以邮件同步管理类调用:
//本地同步邮件列表数据数据到数据库
-(void)synEmailToDB
MailCore2 SDK API相关推荐
- Expo大作战(三十六)--expo sdk api之 ImagePicker,ImageManipulator,Camera
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- Expo大作战(三十)--expo sdk api之Permissions(权限管理模块),Pedometer(计步器api)
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- 中国移动将向广大开发者开放了SDK/API等开发工具
7月30日14时消息,中国移动自有操作系统OPhone OS正式开放开发者社区注册,将向广大开发者开放了SDK/API等开发工具. OPhone OS (Open Mobile Phone Opera ...
- Android SDK|API
Android SDK|API http://www.android-doc.com/reference/packages.html posted on 2018-03-30 21:39 飞狐爷 阅读 ...
- GPS定位系统,开放GPS定位平台SDK/API
智启联云位置服务平台,开放GPS定位平台SDK/API,支持二次开发,支持部标JT808或其他协议设备接入
- Java三大版本及 JVM JDK JRE 及 SDK API
目录 1.三大版本 2. JDK JRE JVM 3. SDK API 1.三大版本 JavaSE: 标准版,整个Java的基础及核心,主要用于开发桌面程序及控制台程序. JavaME: 移动版,基本 ...
- Expo大作战(二十八)--expo sdk api之Speach(语音文字转换),Segment
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- steam游戏上架流程二:steamworks SDK API steamworks.net 对接 unity
参考: steamworks.net 官方文档的说明 http://steamworks.github.io/gettingstarted/ steam游戏上架流程一:使用官方SDK上传游戏 htt ...
- Expo大作战(三十一)--expo sdk api之Payments(expo中的支付),翻译这篇文章傻逼了,完全不符合国内用户,我只负责翻译大家可以略过!...
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
最新文章
- 阿里云支撑马来西亚数字自由贸易区落地 帮助马来西亚中小企业参与全球贸易...
- Stack Overflow上最热门问题是什么?
- c盘users的用户名怎么改_iphone备份太大,严重挤占C盘空间怎么办?不用额外软件将备份放在C盘之外的教程...
- 全局使用dva dispatch
- linux网络编程之多路I/o转接服务器select
- 日志文件和mysql同步到kafka_logstash_output_kafka:Mysql 同步 Kafka 深入详解
- C语言的内存管理(堆,栈,代码段,数据段)
- linux文件系统选哪种,linux下几种文件系统的测试比较
- 搜索推荐广告中的Position Bias:美团DPIN
- ntp时间同步会导致mysql关闭吗_NTP 时间同步网络弱电系统安全监测平台研究
- Atitit 分期理论 attilax总结
- 阿里云刘伟光:核心系统转型之路
- mybatis开发中遇到的小问题
- LeetCode 6罗马数字转整数
- ILSPY反编译工具下载代替收费的Reflector工具
- 软件开发全过程必备文档下载(@附所有文档)
- 二期开发立项申请书,已经提交,等待批准!
- 和周杰讨论:DB2连接问题
- cc2538 BSL下载固件
- 24点游戏开发实例(Qt含源码)