【发布时间】:2020-04-29 09:19:52
【问题描述】:
我的 python 代码导入 imaplib,如下所示:
mail = imaplib.IMAP4_SSL(host=server, port=port)
mail.login(account, password)
mail.select()
typ, msgnums = self.mail.search(*WHERE I WANT TO IMPLEMENT*)
我连接到服务器并定期检查收件箱,并保存上次看到邮件的时间数据。
对于下一次邮件检查,我想搜索从那时起收到的邮件,这样我就不必处理已经看过的邮件了。
我尝试使用 SEARCH 标准之一,但他们似乎只关心日期,而不关心时间。
如何搜索从某个时间后收到的电子邮件?
【问题讨论】:
-
您应该使用 UID 进行搜索。在正确实现的服务器上,它们总是增加,因此您只需记住您成功获取的最后一个 UID,并获取任何大于该 UID 的 UID。就这么简单!
-
@Max 我考虑过使用 UID 获取,但是在邮箱中完成一些删除操作时,UID 不会改变吗?我做了一个实验,发现某封邮件的UID在删除之前的邮件后发生了变化,我认为使用UID并不能保证准确性。
-
UIDs 不会因其他消息被删除而改变,MSNs 会改变(例如,UID SEARCH 与 SEARCH 以及 UID FETCH 与 FETCH)。他们是不一样的!除非您的服务器严重损坏,或者您在文件夹之间移动邮件,否则 UID 是稳定的。