我希望能够使用Python将GMail中的电子邮件从收件箱移动到另一个文件夹。我正在使用imaplib,无法弄清楚该怎么做。
没有针对IMAP的明确移动命令。您将必须先执行,COPY后跟一个STORE(带有适当的标志以指示删除),最后执行expunge。下面给出的示例用于将消息从一个标签移动到另一个标签。您可能需要添加更多错误检查。
COPY
STORE
expunge
import imaplib, getpass, re pattern_uid = re.compile('\d+ \(UID (?P<uid>\d+)\)') def connect(email): imap = imaplib.IMAP4_SSL("imap.gmail.com") password = getpass.getpass("Enter your password: ") imap.login(email, password) return imap def disconnect(imap): imap.logout() def parse_uid(data): match = pattern_uid.match(data) return match.group('uid') if __name__ == '__main__': imap = connect('<your mail id>') imap.select(mailbox = '<source folder>', readonly = False) resp, items = imap.search(None, 'All') email_ids = items[0].split() latest_email_id = email_ids[-1] # Assuming that you are moving the latest email. resp, data = imap.fetch(latest_email_id, "(UID)") msg_uid = parse_uid(data[0]) result = imap.uid('COPY', msg_uid, '<destination folder>') if result[0] == 'OK': mov, data = imap.uid('STORE', msg_uid , '+FLAGS', '(\Deleted)') imap.expunge() disconnect(imap)