【发布时间】:2015-04-30 19:48:03
【问题描述】:
在 IMAP 中将邮件移动到不同的文件夹似乎相当困难。
见IMAP: how to move a message from one folder to another
如何在 Python 中做到这一点而无需编写太多代码?
我更喜欢重复使用:-)
【问题讨论】:
在 IMAP 中将邮件移动到不同的文件夹似乎相当困难。
见IMAP: how to move a message from one folder to another
如何在 Python 中做到这一点而无需编写太多代码?
我更喜欢重复使用:-)
【问题讨论】:
你可以使用 imap_tools 包: https://pypi.org/project/imap-tools/
with MailBox('imap.mail.com').login('test@mail.com', 'pwd', initial_folder='INBOX') as mailbox:
# COPY all messages from current folder to folder1, *by one
for msg in mailbox.fetch():
res = mailbox.copy(msg.uid, 'INBOX/folder1')
# MOVE all messages from current folder to folder2, *in bulk (implicit creation of uid list)
mailbox.move(mailbox.fetch(), 'INBOX/folder2')
# DELETE all messages from current folder, *in bulk (explicit creation of uid list)
mailbox.delete([msg.uid for msg in mailbox.fetch()])
# FLAG unseen messages in current folder as Answered and Flagged, *in bulk.
flags = (imap_tools.StandardMessageFlags.ANSWERED, imap_tools.StandardMessageFlags.FLAGGED)
mailbox.flag(mailbox.fetch('(UNSEEN)'), flags, True)
# SEEN: mark all messages sent at 05.03.2007 in current folder as unseen, *in bulk
mailbox.seen(mailbox.fetch("SENTON 05-Mar-2007"), False)
【讨论】:
您链接到的问题有一个answer,它解释了 IMAP 协议的功能。有可能这样的命令太新鲜了,无法通过 Python 的标准 imaplib 获得。如果是这种情况,最好的办法是向他们发送补丁,以便将其包含在未来的版本中。这就是它的工作原理——如果没有人愿意添加对新命令的支持,它就不会被添加。
imaplib 是一个相当低级的包,所以我不认为它会实现一种很好的消息移动方式。我的建议是使用另一个提供更高级别 IMAP 视图的库(“嘿,服务器,收件箱中有多少条消息?请给我看最后一个的 MIME 结构......”)。
【讨论】:
move。