使用Python将Outlook邮件正文内容复制到WORD文档

时间:2018-06-24 06:14:57

标签: python-3.x vbscript outlook

我想编写一个复制Outlook邮件正文(邮件正文:包含表格)内容的python程序,将其粘贴到Word文档中。

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)”表打印邮件正文时,表内容显示为文本,而不是表格式。

任何人都可以帮助我如何将邮件正文内容导出到word文档,而无需使用python更改其格式。

1 个答案:

答案 0 :(得分:1)

首先,无需拆分传递到NewMailEx类的Application事件的字符串。

当新消息到达收件箱时以及在发生客户端规则处理之前,将触发NewMailEx事件。您可以使用EntryIDCollection数组中返回的Entry ID来调用NameSpace.GetItemFromID方法并处理该项目。 EntryIDsCollection字符串包含与该项目对应的条目ID。请注意,此行为与事件的早期版本有所不同,当EntryIDCollection包含自上次触发该事件以来收件箱中收到的所有项目的逗号分隔条目ID列表。请谨慎使用此方法,以最小化对Outlook性能的影响。但是,根据客户端计算机上的设置,新邮件到达收件箱后,垃圾邮件过滤和将新邮件从收件箱移动到另一个文件夹的客户端规则等过程可能会异步发生。

Outlook对象模型提供了三种处理项目正文的主要方法:

  1. Body
  2. HTMLBody
  3. Word编辑器。 Inspector类的WordEditor属性返回代表邮件正文的Word Document实例。因此,您可以使用Word对象模型对邮件正文进行任何所需的操作。您可以访问代表邮件正文的文档,然后复制/粘贴所需的范围或段落。

您可以在MSDN的Chapter 17: Working with Item Bodies中了解有关所有这些方式的更多信息。