2016-04-26 128 views
7

我在windows平台上使用win32com.client,python 2.7.xoutlook 2013Outlook 2013显示HTML代码而不是实际数据

我需要将HTML文件的内容发布到outlook消息的正文。
我跟着帖子hereherehere关于如何将excel保存为HTML并在outlook中粘贴数据。

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

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

#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 

的上述输出是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", 
     "[email protected]" 
     ) 

所以,当我使用mail.body = open(newfile).read()打开newfile(HTML文件),它粘贴html content一个新的Outlook电子邮件体内。

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

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

此行为的任何想法打开newfile(HTML文件)?

我基本上想在Outlook电子邮件中复制/粘贴html文件(这是出口xlsx)。 不确定以上是正确的方法还是有其他的选择。

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

任何指针表示赞赏。

回答

1

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

+0

当我设置'HTMLBody'时,由于HTML数据有帧,我得到'frame'错误。我无法避免这一点。有没有办法将粘贴/渲染帧到Outlook电子邮件正文? –

+0

不,如前所述,HTML是由Word处理的,而不是IE。它将在框架外显示HTML,但框架不会被加载。请记住,Word不会在网络上下载这些帧。您的HTML必须是独立的。 –

+0

我明白了,但是如何将简单的复制和粘贴的相同HTML内容与从Excel到Outlook的框架结合使用?有没有办法通过一些代码来实现这一点? –

相关问题