Outlook 2013显示HTML代码而不是实际数据

Ani*_*l_M 7 windows outlook win32com python-2.7

我正在使用win32com.client,python 2.7.xoutlook 2013windows平台上.

我需要将HTML文件的内容发布到outlook消息正文.
我按照这里的帖子,这里这里关于如何保存excel HTML和粘贴数据outlook.

但是,当我通过win32com.client.Dispatch而不是看到消息来阅读文件时,我看到的是HTML代码.

以下是将已处理xlsx文件转换为html使用格式的代码win32.com.

#Section to convert excel workbook to html 

    myfile = os.getcwd()+ "\\" + outfile
    newfile = os.getcwd()+ "\\" + "emailData.html"
    xl = EnsureDispatch('Excel.Application')
    #xl.Visible = True
    wb3 = xl.Workbooks.Open(myfile)
    wb3WorkSheet = wb3.Worksheets(1)
    wb3WorkSheet.Activate()
    wb3.SaveAs(newfile, constants.xlHtml)
    wb3.Close(True)
    xl.Workbooks.Close()
    xl.Quit()
    del xl
Run Code Online (Sandbox Code Playgroud)

上面的输出newfile基本上是保存为html的xlsx文件的导出.然后通过mail.body处理程序打开它,该处理程序应该读取并显示outlook中的实际内容.

这是代码.

from win32com.client.gencache import EnsureDispatch
from win32com.client import constants, Dispatch
#Create and open mail message
def Emailer(text, subject, recipient):
    outlook = Dispatch('outlook.application')
    mail = outlook.CreateItem(0)
    mail.To = recipient
    mail.Subject = subject
    mail.HtmlBody = text
    #mail.HtmlBody = open(newfile).read()
    mail.body = open(newfile).read()
    attachment1 = os.getcwd()+"//"+outfile
    mail.Attachments.Add(attachment1)
    mail.Display(True)

Emailer(pageTemplate,        
        "test subject",
        "abc@yahoo.com"
        )
Run Code Online (Sandbox Code Playgroud)

所以,当我打开newfile(html文件)时,mail.body = open(newfile).read()它会html content在新的Outlook电子邮件正文中粘贴.

当我打开newfile(html文件)使用mail.HtmlBody = open(newfile).read()它在outlook电子邮件正文中给出以下错误

ERROR: This page uses frames, but your browser doesn't support them.

关于这种行为的任何想法?

我基本上想在outlook电子邮件中复制/粘贴html文件(这是一个导出xlsx).不确定上述方法是否正确或有其他替代方法.

有没有办法将HTML框架粘贴/渲染到Outlook电子邮件正文中?

任何指针都表示赞赏.

Dmi*_*nko 1

您需要设置 HTMLBody 属性,但请记住 Outlook 中的 HTML 是由 Word 而不是 IE 呈现的,并且不支持内联框架。