2015-04-27 75 views
1

我最近從使用EWS切換到使用Interop.Outlook(see this article)。該過程非常易於使用!Interop.Outlook HTML格式的消息顯示爲純文本

不幸的是,我有一個在EWS中不存在的問題:即使BodyFormat設置爲true,Outlook也不會處理HTML主體。在此代碼示例(VB.NET)中,MessageBody確實以<   HTML開頭。通過調試,我確認在執行顯示時BodyFormat被設置爲HTML。儘管如此,電子郵件正文仍顯示爲純文本。

Dim Outlook As New Outlook.Application 
Dim mail As Outlook.MailItem = DirectCast(Outlook.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem), Outlook.MailItem) 

With mail 
    .To = Addr 
    .Subject = Subject 
    .Body = MessageBody 
    .BodyFormat = If(MessageBody.ToLower.StartsWith("<html"), 
     Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML, 
     Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatPlain) 
    .Display(Modal) 

使用EWS時,正確顯示正確的正文文本。

+0

那是一個容易出錯的方法來檢測HTML .... –

+0

你會怎麼建議?即使在執行if語句之前,BodyFormat屬性也設置爲true。無論哪種方式,它仍然以純文本形式顯示HTML。 – Ebassador

回答

1
.Body = MessageBody 

所述的MailItem類的Body屬性是表示Outlook項目的明文體的字符串(不帶格式)。您需要首先設置正文格式(如果需要)。默認情況下,Outlook使用HTML格式。

With mail 
.To = Addr 
.Subject = Subject 
If(MessageBody.ToLower.StartsWith("<html")) Then 
    .BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML 
    .HTMLBody = MessageBody 
Else 
    .BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatPlain 
    .Body = MessageBody 
End If 
.Display(Modal) 

使用HTMLBody屬性設置HTML標記。

或者只是簡單:

With mail 
.To = Addr 
.Subject = Subject 
If(MessageBody.ToLower.StartsWith("<html")) Then  
    .HTMLBody = MessageBody 
Else 
    .Body = MessageBody 
End If 
.Display(Modal) 
+0

它像冠軍一樣工作。感謝您的明確解釋。 – Ebassador