【问题标题】:Search Email Of Last N Minutes Using IMAP-TOOLS使用 IMAP-TOOLS 搜索最后 N 分钟的电子邮件
【发布时间】:2022-02-25 15:48:16
【问题描述】:

以下代码使用IMAP 登录Outlook 电子邮件并检查Junk 文件夹的内容。

它返回最后一封邮件的内容,主题为"Title"。

我想在源代码中添加一件事。

是否有可能获得例如最后 10 分钟的最后一封电子邮件? 这样他就不会回复较旧的电子邮件。

from imap_tools import MailBox, AND

with MailBox('imap.outlook.com').login(email, password, 'Junk') as mailbox:
    for msg in mailbox.fetch(AND(subject = f'title', seen = False), limit = 1, reverse = True):
        body = msg.text
    for line in body.splitlines():
        print(line)

【问题讨论】:

  • 这能回答你的问题吗? Python imaplib search email with date and time
  • 但是您可以记住您处理的最后一条消息的 UID,并且只搜索比它更新的消息。原始搜索词是“UID SEARCH UID n:*”,其中 n 是您看到的最后一条消息。请注意,这也会返回您看到的最后一条消息,因此您可以将其过滤掉。

标签: python outlook imap imaplib imap-tools


【解决方案1】:

IMAP REF 中没有按时间搜索:https://www.rfc-editor.org/rfc/rfc3501#section-6.4.4

无论如何你都可以做到:

import datetime
from imap_tools import MailBox, A

# get emails that have been received since a certain time
with MailBox('imap.mail.com').login('test@mail.com', 'p', 'INBOX') as mailbox:
    for msg in mailbox.fetch(A(date_gte=datetime.date(2000, 1, 1))):
        print(msg.date.time(), 'ok' if msg.date.hour > 8 else '')
    

https://github.com/ikvk/imap_tools,我是作者

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 2022-12-28
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    相关资源
    最近更新 更多