python - 如何在 python 中进行一般的电子邮件搜索
问题描述
在 imaplib 中,mail.search 需要一个标准,请参阅文档https://docs.python.org/2/library/imaplib.html和标准选项https://gist.github.com/martinrusev/6121028
但是,我需要能够使用更通用的搜索。一组文件从不同的发件人发送,具有不同的文件名。在 Outlook 中,我只需键入 .xlsx 即可查找任何带有附件或 .xlsx 的电子邮件。此外,搜索“username@domain.com”将返回所有发往、发自或抄送的电子邮件。如何使用 imap 在 python 中构建类似的搜索功能?
对于这个 SPECIFIC 构建,应该可以使用嵌套的 if、else 和 try 块。但我正在寻找更通用的东西,看看是否有更好的方法。
如果没有,我想完成什么
提供两封电子邮件,它们必须出现在 from 或 cc 中,但不能同时出现在两者中(有时电子邮件从发件人 1 到达,发件人 2 抄送,有时从 1 发送到 2,然后转发给我的团队)。并且需要附加一个 .xlsx 文件。
解决方案
https://github.com/ikvk/imap_tools
Lib 实现了 rfc3501 中描述的所有搜索逻辑。
您可以单独使用 imap_tools 本身及其查询构建器。
例子:
import datetime
from imap_tools import MailBox, OR
with MailBox('imap.mail.com').login('test@mail.com', 'password', 'INBOX') as mailbox:
for msg in mailbox.fetch(OR(text='hello', date=datetime.date(2000, 3, 15))):
print(msg.uid, msg.subject)
有关更多信息,请参阅 lib 文档。
推荐阅读
- jenkins - CI 用于 Jenkins 和 BlueOcean 的 monorepo
- javascript - 如何在javascript中添加css样式?
- javascript - 无法使用 FileSaver.js 指定文件名
- c# - 从 Visual Studio 扩展调试 C# 文件
- php - PHP中的注册系统
- mongodb - 如何为 MongoDB 中的每个唯一值分组并获取具有最大日期的文档
- security - 设置 Pid cgroup 限制
- wcf - 如何通过 WCF SOAP 服务访问 EF 导航属性?
- azure-cognitive-search - 如果句子有特殊字符,Azure 搜索突出显示不起作用
- matlab - Matlab中的break语句