2016-04-26 134 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的框架結合使用?有沒有辦法通過一些代碼來實現這一點? –

相關問題