我有一个imap帐户,(例如some@gmail.com),我知道很多可以连接的库,并将邮件复制回目的地。我想实现以下目标,
现在我对IMAP消息知之甚少,他们有一些名为ID,UID和MessageID的东西。 ID可能是当前文件夹中的偏移量,UID是当前帐户中的数字ID,而MessageID是唯一字符串。
现在我想知道,在查询文件夹时我应该使用什么搜索,以便下载后的邮件不会返回给我。
我打算使用http://mailsystem.codeplex.com/库,它提供了使用自定义字符串进行搜索并返回int数组的功能。
假设我有一个MaxID,我只想下载ID或UID大于MaxID的消息。我应该使用哪一个? UID还是ID?
答案 0 :(得分:3)
您应该将UID与UIDVALIDITY结合使用。这两个值都是特定于文件夹的。
有一个信息RFC描述了IMAP客户端应如何进行同步(RFC-4549,第4.3节)。该文本建议发出以下两个命令:
tag1 UID FETCH <lastseenuid+1>:* <descriptors>
tag2 UID FETCH 1:<lastseenuid> FLAGS
第一个命令用于获取所有未知邮件所需的信息(不知道有多少邮件)。第二个命令用于同步已经看过的邮件的标志。
AFAIK这种方法被广泛使用。因此,许多IMAP服务器都包含优化,以便快速提供此信息。通常,网络带宽是限制因素。