我在windows
平台上使用win32com.client
, python 2.7.x
和outlook 2013
。
我需要将HTML
文件的内容发布到outlook
消息的主体。
我在这里 , 这里和这里关于如何将excel保存为HTML
并在outlook
粘贴数据。
但是,当我通过win32com.client.Dispatch
阅读文件,而不是看到消息,我看到HTML
代码。
以下是使用win32.com
将处理的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
上面的输出是newfile
,它基本上是保存为html的xlsx文件的导出。 然后通过mail.body
处理程序打开, 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" )
所以,当我使用mail.body = open(newfile).read()
打开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
的导出)。 不知道以上是正确的方法还是有其他的select。
有没有办法将HTML框架粘贴/呈现到Outlook电子邮件正文?
任何指针表示赞赏。
您需要设置HTMLBody属性,但请记住,Outlook中的HTML由Word呈现,而不是IE,并且不支持内联框架。