首页 > 解决方案 > 如何仅移动带有附件的邮件?

问题描述

我有以下代码使用邮箱包将文件夹中的所有电子邮件移动到“旧”文件夹:

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)") 

然而,没有成功。。

请帮忙!

标签: pythonimapimaplibmailboxerimap-tools

解决方案


我很好奇。为什么您认为 none 或 all 只会匹配带有附件的邮件?

正如@triplee 所说,附件没有真正的定义,因此您必须自己修复定义。但是您可以近似,例如移动所有多部分消息,或所有带有图像部分的消息,所有带有 PDF 部分的消息或所有正文部分已明确标记为附件的消息(有时会发生)。搜索关键字分别是header content-type multipartheader content-type image/和。header content-type application/pdfheader content-disposition attachment

这四个示例中的第一个可以很好地工作,其他三个可以与某些服务器一起工作,但远非全部,因为规范说“……有一个带有……的标头”,这可能意味着“在消息标头中”或“在消息标头或每个部分标头之间”。祝您的服务器好运。

你也可以使用or几个条件来加入


推荐阅读