Exchangelib: перемещение электронной почты из папки «Входящие» в папку - PullRequest
0 голосов
/ 27 апреля 2018

Я хочу зачитать новейшую электронную почту в папке входящих сообщений, выбрать из нее вложение и переместить электронную почту в папку. У меня уже есть код для сохранения вложения:

from exchangelib import Credentials, Account
import os

credentials = Credentials('test.name@mail.com', 'password')
account = Account('test.name@mail.com', credentials=credentials, autodiscover=True)
for item in account.inbox.all().order_by('-datetime_received')[:1]:
    for attachment in item.attachments:
        fpath = os.path.join("C:/destination/path", attachment.name)
        with open(fpath, 'wb') as f:
            f.write(attachment.content)

Но у меня проблема с перемещением электронной почты в другую папку, чем входящие. Пока я нашел только эту опцию:

item.move(to_folder)

Но я не знаю, как мне писать в названии папки. Кто-нибудь может дать мне пример для этого?

Заранее спасибо.

1 Ответ

0 голосов
/ 27 апреля 2018

Аргумент to_folder для .move() должен быть экземпляром Folder, а не именем папки. Вот пример:

from exchangelib import Credentials, Account
import os


credentials = Credentials('test.name@mail.com', 'password')
account = Account('test.name@mail.com', credentials=credentials, 
autodiscover=True)

#this will show you the account folder tree
print(account.root.tree())

#if to_folder is a sub folder of inbox
to_folder = account.inbox / 'sub_folder_name'

 #if folder is outside of inbox
 to_folder = account.root / 'folder_name'

for item in account.inbox.all().order_by('-datetime_received')[:1]:
    for attachment in item.attachments:
        fpath = os.path.join("C:/destination/path", attachment.name)
        with open(fpath, 'wb') as f:
            f.write(attachment.content)
    item.move(to_folder)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...