我在windows
平台上使用win32com.client
,python 2.7.x
和outlook 2013
。Outlook 2013显示HTML代码而不是实际数据
我需要将HTML
文件的内容发布到outlook
消息的正文。
我跟着帖子here,here和here关于如何将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电子邮件正文?
任何指针表示赞赏。
当我设置'HTMLBody'时,由于HTML数据有帧,我得到'frame'错误。我无法避免这一点。有没有办法将粘贴/渲染帧到Outlook电子邮件正文? –
不,如前所述,HTML是由Word处理的,而不是IE。它将在框架外显示HTML,但框架不会被加载。请记住,Word不会在网络上下载这些帧。您的HTML必须是独立的。 –
我明白了,但是如何将简单的复制和粘贴的相同HTML内容与从Excel到Outlook的框架结合使用?有没有办法通过一些代码来实现这一点? –