【问题标题】:Python imaplib: get the first unread emailPython imaplib:获取第一封未读邮件
【发布时间】:2021-05-29 17:49:39
【问题描述】:

我遇到了问题,因为当我使用时:

_, search = server.search(None, 'UNSEEN')

搜索方法返回所有未读消息...但我希望它只读取第一条未读消息,否则其余代码将毫无意义。这可能吗?因此,如果我一次又一次地调用该方法,我希望它只返回下一条未读消息,依此类推......

【问题讨论】:

    标签: python python-3.x imap imaplib


    【解决方案1】:

    如果您最终还是打算阅读所有消息,则循环遍历当前未读的消息比在每条消息后再次搜索更经济。

    _, search = server.search(None, 'UNSEEN')
    for num in search[0].split():
       result, data = M.fetch(num, '(RFC822)')
       msg = email.message_from_bytes(data[0][1])
       whatever(msg)
    

    如果您真的想在收到一封邮件后退出,您可以在处理完一封邮件后使用break 退出for 循环。或者重写代码只处理第一个:

    _, search = server.search(None, 'UNSEEN')
    result, data = M.fetch(search[0].split()[0], '(RFC822)')
    msg = email.message_from_bytes(data[0][1])
    whatever(msg)
    

    【讨论】:

    • 完美,谢谢。已经与第一个解决方案类似,但出现了其他问题……但是您的解决方案给了我正确的提示;)
    猜你喜欢
    • 1970-01-01
    • 2010-12-19
    • 2012-12-11
    • 2012-10-24
    • 2020-11-18
    • 2013-06-26
    • 2021-11-01
    • 2017-04-04
    • 1970-01-01
    相关资源
    最近更新 更多