Скопируйте содержимое почтового сообщения Outlook в WORD Document, используя Python - PullRequest
0 голосов
/ 24 июня 2018

Я хочу написать программу на python, которая копирует содержимое почтового тела outlook (Mail body: содержит таблицы) и вставляет его в текстовый документ.

import win32com.client
import pythoncom

class Handler_Class(object):
    def OnNewMailEx(self, receivedItemsIDs):
        for ID in receivedItemsIDs.split(",")
            mailItem = outlook.Session.GetItemFromID(ID)
            print(mailItem.Body)
outlook = win32com.client.DispatchWithEvents("Outlook.Application", Handler_Class)
pythoncom.PumpMessages()

когда я пытаюсь напечатать текст письма, используя «print (mailItem.Body)», содержимое таблицы отображается в виде текста, а не в виде таблицы.

Может ли кто-нибудь помочь мне, как экспортировать содержимое mailbody в текстовый документ, не меняя его формат с помощью python.

1 Ответ

0 голосов
/ 24 июня 2018

Прежде всего, нет необходимости разбивать строку, переданную событию NewMailEx класса Application.

Событие NewMailEx возникает, когда новое сообщение поступает в папку «Входящие» и до обработки правила клиента. Вы можете использовать идентификатор записи, возвращенный в массиве EntryIDCollection, чтобы вызвать метод NameSpace.GetItemFromID и обработать элемент. Строка EntryIDsCollection содержит идентификатор записи, соответствующий этому элементу. Обратите внимание, что это поведение изменилось по сравнению с более ранними версиями события, когда EntryIDCollection содержал список разделенных запятыми идентификаторов записи всех элементов, полученных в папке «Входящие» с момента последнего запуска события. Используйте этот метод с осторожностью, чтобы минимизировать влияние на производительность Outlook. Однако в зависимости от настроек на клиентском компьютере после поступления нового сообщения в папку «Входящие» такие процессы, как фильтрация нежелательной почты и правила клиента, которые перемещают новое сообщение из папки «Входящие» в другую папку, могут происходить асинхронно.

Объектная модель Outlook предоставляет три основных способа работы с телами элементов:

  1. Body .
  2. HTMLBody .
  3. Редактор Word. Свойство WordEditor класса Inspector возвращает экземпляр документа Word, который представляет тело сообщения. Таким образом, вы можете использовать объектную модель Word и делать с сообщением все, что вам нужно. Вы можете получить доступ к Документу, который представляет тело сообщения и скопировать / вставить требуемый диапазон или абзац.

Подробнее обо всех этих способах вы можете прочитать в Глава 17: Работа с телами элементов в MSDN.

...