python - 如何仅移动带有附件的邮件?
问题描述
我有以下代码使用邮箱包将文件夹中的所有电子邮件移动到“旧”文件夹:
with MailBox('mail.yu.nl').login('75090058@yu.nl', 'yu', initial_folder='INBOX') as mailbox:
mailbox.move(mailbox.fetch(), 'Inbox.Old')
现在,我只想移动包含附件的邮件。
我尝试了以下方法:
resp, items = imap.uid("search",None, 'All')
resp, data = imap.uid('fetch',msg_uid, "(RFC822)")
然而,没有成功。。
请帮忙!
解决方案
我很好奇。为什么您认为 none 或 all 只会匹配带有附件的邮件?
正如@triplee 所说,附件没有真正的定义,因此您必须自己修复定义。但是您可以近似,例如移动所有多部分消息,或所有带有图像部分的消息,所有带有 PDF 部分的消息或所有正文部分已明确标记为附件的消息(有时会发生)。搜索关键字分别是header content-type multipart
、header content-type image/
和。header content-type application/pdf
header content-disposition attachment
这四个示例中的第一个可以很好地工作,其他三个可以与某些服务器一起工作,但远非全部,因为规范说“……有一个带有……的标头”,这可能意味着“在消息标头中”或“在消息标头或每个部分标头之间”。祝您的服务器好运。
你也可以使用or
几个条件来加入。
推荐阅读
- python - 如何使用 Python MAPI 从 Outlook 获取“收件人”姓名和电子邮件地址
- google-cloud-platform - 使用 TaggedOutputs 中断数据流,“无法腌制 WeakDictionary”
- unity3d - NavMeshAgent.SetDestination Y轴问题
- android - SonarLint:删除不必要的布尔文字
- apache-beam - 如何使用 Apache Beam 从 Confluent Schema Registry 推断模式?
- python - 在 python3 中创建新的空列表时出现语法错误
- python - 将 JSON 坐标转换为 numpy 数组
- vue.js - 缺少 sass-loader、css-loader 依赖项 quasar/vue
- linux - 使用 awk 打印价格较低的第 1 列和第 4 列
- angular - 如何在 angular slickgrid 中立即渲染自定义角度组件