невозможно переместить / удалить электронные письма, но МОЖЕТ скопировать его - PullRequest
0 голосов
/ 26 декабря 2018

Я могу скопировать письмо в другую папку, но не могу удалить его из папки «Входящие» (Office 365)

#!/usr/bin/python

import email, imaplib
user = 'user@example.com'
pwd = 'pass'

conn = imaplib.IMAP4_SSL("outlook.office365.com")
conn.login(user,pwd)
conn.select("Inbox")

resp, items = conn.uid("search",None, 'All')
items = items[0].split()
for emailid in items:
    resp, data = conn.uid("fetch",emailid, "(RFC822)")
    if resp == 'OK':
        email_body = data[0][1].decode('utf-8')
        mail = email.message_from_string(email_body)
        if mail.get_content_maintype() != 'multipart':
            continue
        if mail["Subject"].find("Linux") > 0:
            result = conn.uid('COPY', emailid, "Archive")
            print result
            if result[0] == 'OK':
             result = mov, data = conn.uid('STORE', emailid, '+FLAGS', 'Deleted Items')
             print result
             conn.expunge()

Я получаю ниже:

('OK', ['16 (FLAGS (\\Seen))'])

, а письма остаются в папке «Входящие»

1 Ответ

0 голосов
/ 26 декабря 2018

Понял: пришлось добавить \ перед удаленными элементами, сначала я его не добавил, потому что пример кода был для Gmail. Сначала скопируйте электронные письма в нужную папку, а затем удалите ее из папки «Входящие»:

if mail["Subject"].find("Linux") > 0:
            result = conn.uid('COPY', emailid, "Archive")
            print result
            if result[0] == 'OK':
             result = mov, data = conn.uid('STORE',emailid, '+FLAGS', '(\Deleted Items)')
...