【发布时间】:2021-05-29 17:49:39
【问题描述】:
我遇到了问题,因为当我使用时:
_, search = server.search(None, 'UNSEEN')
搜索方法返回所有未读消息...但我希望它只读取第一条未读消息,否则其余代码将毫无意义。这可能吗?因此,如果我一次又一次地调用该方法,我希望它只返回下一条未读消息,依此类推......
【问题讨论】:
标签: python python-3.x imap imaplib
我遇到了问题,因为当我使用时:
_, search = server.search(None, 'UNSEEN')
搜索方法返回所有未读消息...但我希望它只读取第一条未读消息,否则其余代码将毫无意义。这可能吗?因此,如果我一次又一次地调用该方法,我希望它只返回下一条未读消息,依此类推......
【问题讨论】:
标签: python python-3.x imap imaplib
如果您最终还是打算阅读所有消息,则循环遍历当前未读的消息比在每条消息后再次搜索更经济。
_, 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)
【讨论】: