首页 > 解决方案 > imap SEARCH 如何在 Microsoft Exchange 上使用 python imaplib 工作?

问题描述

我的目标是使用 python 中的 imaplib 从 Microsoft 交换服务器获取自某个日期以来收到的电子邮件列表。
到目前为止,我发现 Exchange 不支持该sort命令。但search也不能很好地工作:只有几个搜索参数可以按预期工作,例如FROM关键字。但是对于我的程序,我需要阅读日期,并且我已经尝试了我可以在互联网上找到的所有相关关键字:
“ON”和“SINCE”导致以下错误消息:imaplib.error: SEARCH command error: BAD [b'Command Argument Error. 11']我想这意味着 Exchange 不支持它们。
'DATE' 抛出一个不同的异常:imaplib.error: SEARCH command error: BAD [b'The specified message set is invalid.']我想这意味着服务器确实支持DATE一般来说,但无法处理我的数据。因此,我尝试了几种日期格式,因为我不知道服务器需要哪种日期格式:
"2021-07-17"据我所知,这应该是正常格式
"2021-Jul-17" "17-Jul-2021""17-07-2021"但所有这些格式都会导致前面显示的相同错误消息。
这是我的代码,也许我只是以错误的方式发送数据?:

imap = imaplib.IMAP4_SSL(imapserver)
imap.login(username, pwd)
status, messages = imap.select(folder)
print(imap.search(None, '(DATE "07-Jul-2021")'))

现在我的问题如下:

  1. 我的假设是否正确,这两个错误消息的意思是“不支持”和“支持但语法错误”?
  2. 有没有办法查看允许的搜索参数?
  3. 服务器期望什么日期格式?(这个问题已经回答了,ty)
  4. 我的代码语法是否正确?'(日期“2021 年 7 月 7 日”)'
  5. 如果这些都不是我的程序无法运行的原因 - 我做错了什么才能从某个日期收到电子邮件?

这些问题的任何答案都会帮助我解决我的困惑,非常感谢;)

标签: pythonexchange-serverimapimaplib

解决方案


推荐阅读