【问题标题】:How to copy the entire outlook message content in python如何在python中复制整个outlook消息内容
【发布时间】:2021-04-06 03:29:18
【问题描述】:

我是一名初学者,试图在我的 python 脚本中实现以下目标:谁能帮我解决这个问题?我卡在第 2 步。

  1. 输入:本地保存的 Outlook 邮件 (*.msg) 路径
  2. 转到路径并复制整个邮件正文
  3. 创建新邮件并将内容粘贴到新邮件中
  4. 手动发送

...

    import win32com.client as win32  

    ########### Functions
    def getMailBody(msgFile):
        start_text = "<html>"
        end_text = "</html>"
        with open(msgFile) as f:
            data=f.read()
        return data[data.find(start_text):data.find(end_text)+len(end_text)]

    def releaseMail(body, subject, recipient):
        outlook = win32.Dispatch('outlook.application')
        mail = outlook.CreateItem(0)
        mail.To = recipient
        mail.Subject = subject
        mail.HtmlBody = body
        mail.Display(True)

    ############### Main ################
    msgFile = "C:\\RELM\\testMsg.msg"
    mailTo = "mymail@myserver.com"
    mailSubject = "Test message"
    mailBody = getMailBody(msgFile)
    releaseMail(mailBody, mailSubject, mailRecipient)

...`

以下是我遇到的错误。

文件“C:\Python\Python38-32\lib\encodings\cp1252.py”,第 23 行,在解码中 返回 codecs.charmap_decode(input,self.errors,decoding_table)[0] UnicodeDecodeError:“charmap”编解码器无法解码位置 924 中的字节 0x81:字符映射到未定义

【问题讨论】:

  • 更新getMailBody函数如下,现在没有问题了。但是,当我检查创建的新邮件时,格式都消失了。 outlook = win32.Dispatch('outlook.application').GetNamespace("MAPI") msg​​ = outlook.OpenSharedItem(msgFile) return msg.Body 如何保留原始邮件的格式?

标签: python email outlook


【解决方案1】:

我认为这应该可行,但我目前无法对其进行测试:

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
def getMailBody(msgFile):
        msgText = outlook.OpenSharedItem(msgFile)
        return msgText.Body

【讨论】:

    猜你喜欢
    • 2014-11-24
    • 1970-01-01
    • 2019-03-18
    • 2011-07-01
    • 1970-01-01
    • 2017-07-18
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多