我正在实现 IMAP 客户端,但 IMAP 邮箱同步出现问题。
首先,可以从 IMAP 服务器获取新邮件,但我不知道如何从邮箱中查找已删除的邮件。
我是否应该从服务器获取所有消息并将其与本地数据进行比较以进行同步?
最佳答案
通常的做法是对每个文件夹执行以下两个 IMAP 命令:
. EXAMINE "<foldername>"
. FETCH 1:* (UID FLAGS)
第一个命令选择一个文件夹并返回该文件夹的 UIDVALIDITY。如果此值与之前为此文件夹返回的 UIDVALIDITY 匹配,则您可以依赖 UID。第二个命令返回(至少)所选文件夹中每封邮件的 UID 和所有 FLAGS。
\Seen
) 和已删除邮件 ( \Deleted
) 的信息。 许多 IMAP 客户端都使用这种方法,并且大多数 IMAP 服务器都针对它们进行了优化。限制因素通常是客户端和服务器之间的可用网络带宽。
以下情况稍微复杂一些:
关于IMAP 同步,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9956324/