将Word内容复制到Outlook中

时间:2018-10-12 20:18:27

标签: python outlook ms-word win32com

我有一个带格式的文本,图像和表格的Word文档。您可以手动复制其内容并将其毫无问题地插入Outlook。如何在Python中执行此操作?

我的代码:

import win32com.client

word = win32com.client.Dispatch("Word.Application")
doc = word.Documents.Open(your_doc_path)
contents = 'What here?'  # doc.Content?

outlook = win32com.client.Dispatch("Outlook.Application")
# Create a new MailItem object
msg = outlook.CreateItem(0)

msg.Body = 'What here?'  # `contents` throws pywintypes.com_error
msg.Display(False)

最接近的问题:

Copy Word format into Outlook message

A word document's contents as the body of an email message

How to paste into Outlook from Microsoft Word

Exporting rich text to outlook and keep formatting

不起作用:

1-将Word文档另存为HTML(类似于RTF)和

with open(html_path, 'r', errors='ignore') as f:
    # Possible UnicodeDecodeError
    doc_body = f.read()

    msg.BodyFormat = 2  # olFormatHTML
    msg.Body = doc_body

2-在压缩的Word文档中读取document.xml。

可能的方式:

  

Inspector类的WordEditor属性返回一个实例   表示邮件正文的Word文档。

如何通过win32com应用WordEditor?

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码将Word内容复制到Outlook中:

import win32com.client
app=win32com.client.Dispatch('Word.Application')
doc=app.Documents.Open(r'D:\winGUI\test\1.doc')
doc.Content.Copy()
doc.Close()

使用Paste ()方法粘贴

答案 1 :(得分:0)

在Alina Li的帮助下,这是最终的解决方案:

import win32com.client

word = win32com.client.Dispatch("Word.Application")
doc = word.Documents.Open(word_path)
doc.Content.Copy()
doc.Close()

outlook = win32com.client.Dispatch("Outlook.Application")
# Create a new MailItem object
msg = outlook.CreateItem(0)
msg.GetInspector.WordEditor.Range(Start=0, End=0).Paste()

msg.Display(False)

图像,表格,格式-一切都很好。