我正在开发一个应用程序,其中本地核心数据数据库与用户的 IMAP 电子邮件帐户保持同步。我正在使用 MailCore ( http://libmailcore.com ) 来处理所有 IMAP API 调用,但似乎有一些缺点。这是我希望我的应用程序能够执行的操作:
- 在服务器上拥有最近 50 封电子邮件的本地副本
- 下载自上次提取以来用户收到的所有新电子邮件,设备上最多保留 50 封。
- 删除服务器上已删除的本地邮件。
MailCore 提供的用于检索电子邮件的唯一方法如下:
- (NSArray *)messagesFromSequenceNumber:(NSUInteger)startNum to:(NSUInteger)endNum withFetchAttributes:(CTFetchAttributes)attrs
- (NSArray *)messagesFromUID:(NSUInteger)startUID to:(NSUInteger)endUID withFetchAttributes:(CTFetchAttributes)attrs
现在,我正在从服务器检索最新的电子邮件并下载有关它们的所有信息,然后我从服务器检索最新的 50 个 UID,并将它们与我的本地缓存进行比较,以查看已删除的内容。这似乎非常低效。有没有更好的方法来同步收件箱而无需两次往返服务器(至少)?