当前位置:  开发笔记 > 编程语言 > 正文

IMAP:如何将邮件从一个文件夹移动到另一个文件夹

如何解决《IMAP:如何将邮件从一个文件夹移动到另一个文件夹》经验,为你挑选了3个好方法。

(使用IMAP命令,而不是任何其他邮件包的帮助)



1> Jan Kundrát..:

有多种方法可以做到这一点.最好的一个是从2013年初开始UID MOVE在RFC 6851中定义的命令:

C: a UID MOVE 42:69 foo
S: * OK [COPYUID 432432 42:69 1202:1229]
S: * 22 EXPUNGE
S: (more expunges)
S: a OK Done

此功能表示此扩展的存在MOVE.

如果它不可用,但UIDPLUS(RFC 4315)是,第二个最佳选择是使用和的组合UID STORE,UID COPYUID EXPUNGE:

C: a01 UID COPY 42:69 foo
S: a01 OK [COPYUID 432432 42:69 1202:1229] Copied
C: a02 UID STORE 42:69 +FLAGS.SILENT (\Deleted)
S: a02 OK Stored
C: a03 UID EXPUNGE 42:69
S: * 10 EXPUNGE
S: * 10 EXPUNGE
S: * 10 EXPUNGE
S: a03 Expunged

如果UIDPLUS缺少,则无法做任何合理的事情 - 该EXPUNGE命令会永久删除所有标记为删除的邮件,包括您未触及的邮件.最好的是在这种情况下使用UID COPYUID STORE.



2> Sec..:

我不确定你在imap-speak中是多么精通,但基本上在登录后,"选择"源邮箱,"复制"邮件,并"删除"邮件(或"删除"旧邮箱,如果它现在是空的:-).

a login a s
b select source
c copy 1 othermbox
d store 1 +flags (\Deleted)
e expunge

将是要发送的消息的示例.(注意:imap消息在每个命令之前需要一个uniqe前缀,因此前面的"ab c")

有关详细信息,请参阅RFC 2060.


请注意,`expunge`将删除标记为`\ Deleted`的_all_消息,这可能不是您想要的.

3> Avadhesh..:

如果您有要移动的电子邮件的uid.

import imaplib

obj = imaplib.IMAP4_SSL('imap.gmail.com', 993)
obj.login('username', 'password')
obj.select(src_folder_name)
apply_lbl_msg = obj.uid('COPY', msg_uid, desti_folder_name)
if apply_lbl_msg[0] == 'OK':
    mov, data = obj.uid('STORE', msg_uid , '+FLAGS', '(\Deleted)')
    obj.expunge()

msg_uid是邮件的UID.


-1:"使用IMAP命令,而不是在任何其他邮件包的帮助下"
+1这是迄今为止我在使用python完成此任务时发现的最佳链接。
推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有