代码之家  ›  专栏  ›  技术社区  ›  Max

将Word内容复制到Outlook

  •  0
  • Max  · 技术社区  · 7 年前

    我有一个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类的WordEditorProperty返回 表示消息正文的Word文档。

    如何通过win32com应用WordEditor?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Max    7 年前

    在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)
    

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

        2
  •  0
  •   Alina Li    7 年前

    您可以使用以下代码将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 () 方法