python - 如何使用 python 从 EML 文件开始在 imap 文件夹中搜索邮件?
问题描述
我试图在我的 imap 文件夹中选择一个特定的邮件,但没有明确的标识符。我唯一拥有的是保存为 eml 文件的邮件的纯文本副本。
我尝试使用email
模块从文件中加载邮件,但每当我imaplib
从邮件中包含的数据开始运行模块的搜索功能时,我都会不断收到错误消息。
在这种情况下,我假设邮件来自当前邮箱。
这是我现在使用的代码
import imaplib, email
m = imaplib.IMAP4_SSL(IMAP_SERVER)
m.login(IMAP_USER, IMAP_PWD)
m.select()
mail_file = open('./file.eml')
raw_mail = mail_file.read()
mail = email.message_from_string(raw_mail)
resp, items = m.search(None, '(FROM "' + mail["FROM"] +'")')
但我收到以下错误:
回溯(最近一次通话最后):
File "<stdin>", line 1, in <module>
File "C:\Users\user\AppData\Local\conda\conda\envs\py353\lib\imaplib.py", line 707, in search
typ, dat = self._simple_command(name, *criteria)
File "C:\Users\user\AppData\Local\conda\conda\envs\py353\lib\imaplib.py", line 1180, in _simple_command
return self._command_complete(name, self._command(name, *args))
File "C:\Users\user\AppData\Local\conda\conda\envs\py353\lib\imaplib.py", line 1011, in _command_complete
raise self.error('%s command error: %s %s' % (name, typ, data))
imaplib.error: SEARCH command error: BAD [b'Error in IMAP command SEARCH: Unknown argument DATE (0.000 + 0.000 secs).']`
我应该如何做到这一点以及我可以使用哪些过滤器来有合理的机会在结果中获得我想要的邮件?
编辑:按要求我的mail['FROM']
回报'test sender\n\t<sender@domain.com>'
我做了一个类似格式的硬编码测试并删除了特殊字符,但当然我收到了一封不同的邮件,其中有匹配的发件人。此外,我试图在不以最自动的方式更改任何数据的情况下获取正确的邮件。
解决方案
推荐阅读
- python - 找出前 2 行中是否存在值
- apache - 简单的 cgi 脚本因权限被拒绝错误而失败
- c++ - CPP Windows 字符串转换混淆 CStringA 和 LPCWSTR
- google-apps-script - 获取单元格中注释的最后一行或第一行并添加到它
- c++ - 寻找一种加速功能的方法
- php - 为什么搜索总是重定向到最后一个 if?
- python - 使用 Python 和 Jaydebeapi 查询时间戳数据时出错
- c# - 有没有办法让 GetConversationHeight 的返回不那么慢?
- javascript - 为什么表达式与花括号一起打印?
- reactjs - 如何在反应路由器 4 中替换路由和刷新?