问题描述
我遇到了一个问题,因为当我使用:
_,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)