【发布时间】:2021-04-06 03:29:18
【问题描述】:
我是一名初学者,试图在我的 python 脚本中实现以下目标:谁能帮我解决这个问题?我卡在第 2 步。
- 输入:本地保存的 Outlook 邮件 (*.msg) 路径
- 转到路径并复制整个邮件正文
- 创建新邮件并将内容粘贴到新邮件中
- 手动发送
...
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 如何保留原始邮件的格式?