Я хочу иметь возможность перемещать электронную почту в GMail из папки «Входящие» в другую папку, используя Python. Я использую imaplib и не могу понять, как это сделать.
Есть нет явной команды перемещения для IMAP. Вам нужно будет выполнить COPY
, затем STORE
(с соответствующим флагом для указания удаления) и, наконец, exunge
. Приведенный ниже пример работал для перемещения сообщений с одного ярлыка на другой. Вы, вероятно, захотите добавить дополнительную проверку ошибок.
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)