Прямых решений я не нашел, поэтому реализовал следующим образом:
Письмо копируется в нужную папку, а после удаляется из исходной. Важный момент, если нужно удалять несколько писем, как это было у меня, то обязательно нужно это делать через uid
, т.к, после удаления первого письма обычные айдишники остальных писем сместятся.
import imaplib
import re
def parse_uid(data):
pattern_uid = re.compile(r'\d+ \(UID (?P<uid>\d+)\)')
match = pattern_uid.match(data)
return match.group('uid')
imap = imaplib.IMAP4_SSL(imap_server)
imap.login(user, password)
imap.select('inbox')
mails = imap.search(None, "SINCE 30-Dec-2022")
for mail in mails:
resp, msg_uid = self.imap.fetch(i, "(UID)")
msg_uid = self.parse_uid(msg_uid[0].decode('utf-8'))
imap.uid('COPY', i, 'папка_куда_переместить')
imap.uid('STORE', i, '+FLAGS', '(\Deleted)')