【发布时间】:2016-08-20 22:09:02
【问题描述】:
我在windows 平台上使用win32com.client、python 2.7.x 和outlook 2013。
我需要将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",
"abc@yahoo.com"
)
因此,当我使用 mail.body = open(newfile).read() 打开 newfile(html 文件)时,它会将 html content 粘贴到新的 Outlook 电子邮件正文中。
当我使用mail.HtmlBody = open(newfile).read() 打开newfile(html 文件)时,outlook 电子邮件正文中出现以下错误
ERROR: This page uses frames, but your browser doesn't support them.
对这种行为有什么想法吗?
我基本上想在 Outlook 电子邮件中复制/粘贴 html 文件(这是 xlsx 的导出)。
不确定上述方法是否正确或有其他选择。
有没有办法将 HTML 框架粘贴/渲染到 Outlook 电子邮件正文中?
任何指针表示赞赏。
【问题讨论】:
标签: windows python-2.7 outlook win32com