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