Python imaplib:获取第一封未读电子邮件

问题描述

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

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

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

解决方法

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

_,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)

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...