Добавление вложения создает новый MailItem в папке «Входящие» Outlook - PullRequest
0 голосов
/ 12 октября 2018

Я работаю с пустым файлом msg, созданным через Outlook один раз.Следующий код добавляет вложение в электронное письмо (вы можете сохранить его, используя msg.SaveAs(Path=save_path)).

import win32com.client

msg_path = r'C:\email.msg'
attachment_path = r'C:\specimen.pdf'

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
msg = outlook.OpenSharedItem(msg_path)

msg.Attachments.Add(Source=attachment_path)

Проблема: последняя строка msg.Attachments.Add(Source=attachment_path) создает новый дубликат почты в папке входящих сообщений.

Здесь я нашел старое обсуждение проблемы: Добавление вложения создает новый MailItemв папке входящих сообщений .Вот несколько цитат:

OpenSharedItem всегда создает временное сообщение и импортирует содержимое файла MSG;он не работает напрямую с указанным файлом.

Проблема в том, что сообщение сохраняется при добавлении вложения, но с этим ничего не поделаешь.

Важной частью является то, что OOM не работает с файлом MSG - после его импорта в сообщение в одной из папок Outlook исходный файл MSG исчезает из изображения.

Существуют ли обходные пути, которые не позволяют Outlook создать новое сообщение в папке «Входящие»?Если нет, то как заставить Outlook сохранить его в папке нежелательной почты?

Моя цель - изменить существующий пустой файл msg: добавить строку темы и вложение.

1 Ответ

0 голосов
/ 12 октября 2018

Отвечая на мой собственный вопрос,

Идея состоит в том, чтобы создать новое письмо вместо изменения существующего.Вот код:

outlook = win32com.client.Dispatch("Outlook.Application")
msg = outlook.CreateItem(0)
msg.Attachments.Add(Source=str(attachment_path))
msg.SaveAs(Path=save_path)
...