Сохранение вложений из Outlook с помощью Python с помощью сообщения во вложенной папке

#python #outlook

#python #outlook

Вопрос:

Я хочу сохранить вложения Outlook из Outlook со следующей структурой:

прикрепить (на рабочем столе) -> папка (имя вложенной папки в Outlook) -> папка (отдельное сообщение) -> вложения из сообщения

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

Извините, если мой код избыточен, я только начал учиться!

 import win32com.client as client
import os

outlook = client.Dispatch('Outlook.Application').GetNamespace('MAPI')

path = 'C:\Users\XXXXX\Desktop\Attach'
os.chdir(path)

inbox = outlook.GetDefaultFolder(6)
inboxfolders = inbox.Folders
inbxcount = inboxfolders.Count

folderlist = []
for x in range(1, inbxcount   1):
    subfolder = inboxfolders[f'{x}']
    strsub = str(subfolder)
    if 'PRs' in strsub:
        folderlist.append(strsub)
for i in folderlist:
    newfolder = i
    os.makedirs(newfolder)
    sub = inboxfolders[f'{i}']
    messages = sub.Items
    msgcount = messages.Count
    newpath = f'{path}\{newfolder}'
    for y in range(1, msgcount   1):
        msgfolder = f'PR{y}'
        os.chdir(newpath)
        os.makedirs(msgfolder)
        path3 = f'{newpath}\PR{y}'
        for msg in range(1, msgcount   1):
            message = messages.Item(msg)
            attachments = message.Attachments
            attchcount = attachments.Count
            for attch in range(1, attchcount   1):
                attachment = attachments.Item(attch)
                sattachment = str(attachment)
                if 'image' not in sattachment:
                    attachment.SaveAsFile(os.path.join(path3, sattachment))
                    os.chdir(path)
  

Ответ №1:

Решение состоит в том, чтобы удалить второй цикл for, повторяющий отдельные сообщения. Таким образом, были удалены дополнительные вложения.