#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, повторяющий отдельные сообщения. Таким образом, были удалены дополнительные вложения.