首页
学习
活动
专区
圈层
工具
发布

IMAP同步
EN

Stack Overflow用户
提问于 2012-03-31 21:35:02
回答 2查看 8.5K关注 0票数 12

我正在实现一个IMAP客户端,但我遇到了IMAP邮箱同步的问题。

首先,从IMAP服务器获取新邮件是可以的,但我不知道如何从邮箱中查找删除的邮件。

是否应该从服务器获取所有消息,并将其与本地数据进行比较以进行同步?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-02 02:55:48

通常的方法是对每个文件夹执行以下两个IMAP命令:

代码语言:javascript
复制
. EXAMINE "<foldername>"
. FETCH 1:* (UID FLAGS)

第一个命令选择一个文件夹并返回该文件夹的UIDVALIDITY。如果此值与此文件夹以前返回的UIDVALIDITY匹配,则可以依赖UID。第二个命令返回(至少)所选文件夹中每个邮件的UID和所有标志。

  • 您应该使用UID来检测添加或删除了哪些邮件。请注意,如果不同时更改UID,则无法更改电子邮件的内容。
  • 在basic IMAP中,标志是电子邮件唯一可以更改的属性。标志包含有关已读邮件( (\Deleted).

)和已删除邮件(\Seen)的信息

许多IMAP客户端都使用这种方法,并且大多数IMAP服务器都针对这些客户端进行了优化。限制因素通常是客户端和服务器之间的可用网络带宽。

以下情况稍微复杂一些:

  • 如果UIDVALIDITY不匹配,该怎么办?IMAP规范要求服务器尽最大努力避免对此value.
  • Should进行不必要的更改。对移动的邮件(实际复制的邮件)有优化吗?在基本IMAP中,您无法检测到一封电子邮件是另一封电子邮件的副本-无论源文件夹中的电子邮件是否仍然存在,或者它是否已被删除和删除。
票数 25
EN

Stack Overflow用户

发布于 2014-08-12 15:35:56

也许对你的应用程序来说太晚了,但你可以在RFC:https://www.rfc-editor.org/rfc/rfc4549中找到一个complete IMAP同步策略

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9956324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档