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

时间:2020-03-06 14:36:40  来源:igfitidea点击:

(使用IMAP命令,而不借助任何其他邮件程序包)

解决方案

我猜我们将邮件复制到新文件夹,然后在旧文件夹中将其删除(删除)。

RFC351

提示没有DELETE命令可以执行意思,我们必须将邮件标记为已删除,然后删除邮箱。看一下RFC。请谨慎使用DELETE,因为它会删除整个邮箱,而不是单个邮件。

我不确定我们对imap的了解程度如何,但是基本上在登录后,"选择"源邮箱,"复制"邮件,然后"删除"邮件(如果是,则"删除"旧邮箱)现在是空的:-)。

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

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

有关详细信息,请参见RFC 2060。

如果我们有将要移动的电子邮件的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。