【问题标题】:Outlook 2013 display HTML code instead of actual DataOutlook 2013 显示 HTML 代码而不是实际数据
【发布时间】:2016-08-20 22:09:02
【问题描述】:

我在windows 平台上使用win32com.clientpython 2.7.xoutlook 2013

我需要将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",
        "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


    【解决方案1】:

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

    【讨论】:

    • 当我设置HTMLBody 时,我得到frame 错误,因为HTML 数据有框架。我无法避免。有没有办法将/渲染框架粘贴到 Outlook 电子邮件正文中?
    • 不,正如我之前提到的,HTML 由 Word 处理,而不是 IE。它将在框架外显示 HTML,但不会加载框架。请记住,Word 不会在网络上下载框架。您的 HTML 必须是独立的。
    • 我明白了,但是如何简单地复制和粘贴相同的 HTML 内容以及从 excel 到 Outlook 的框架?有没有办法通过一些代码来实现?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 2020-02-25
    • 2017-12-19
    • 2014-02-05
    相关资源
    最近更新 更多