跟踪最后一封电子邮件的正确方式是什么? [英] What is the right way to track last email message?

查看:22
本文介绍了跟踪最后一封电子邮件的正确方式是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要为一些IMAP服务器上的电子邮件编写一个解析器。它作为cron任务运行,并将结果存储在数据库中。

我需要一种方法,仅获取上次运行尚未解析的消息。

现有的数据库架构建议实现者应该使用UID来跟踪某个特定邮箱的新消息。我想知道它是否正确...

我看到的是RFC3501表示UID、UIDVALIDITY和邮箱名称在不同的情况下都会发生变化。

更具体地说,UID可能会在不同的会话之间更改,如果UIDVALIDITY更改,您可以判断UID是否更改。

因此,我无法在数据库中存储消息的UID和UIDVALIDITY,并确保这对数字在以后的运行中不会毫无意义。

RFC3501还说:

邮箱中的唯一标识符必须始终严格升序。

假设UIDVALIDITY发生了变化。将为邮箱重新生成所有UID。

这是否意味着最后一条消息的先前UID 1000将严格高于1000?或者,这是否仅仅意味着旧邮件的UID必须低于新邮件,并且与以前的UID无关?

此外,如果我绑定到Message-ID而不是UID。我发现RFC-2822说Message-ID应该存在于消息中,这意味着根本不能有Message-ID。

那么,如何在分析器运行之间跟踪已分析的邮件和新邮件?

推荐答案

UIDVALIDITY在邮箱重命名或删除时更改。 幸运的是,Gmail、Yahoo、Microsoft Exchange等邮件服务器只允许重命名或删除用户创建的邮箱。因此,在我看来,通过这种方法,收件箱、已发送、删除中的UID始终是唯一的。

这篇关于跟踪最后一封电子邮件的正确方式是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆