Interop.Outlook HTML格式的消息显示为纯文本

时间:2015-04-27 17:17:23

标签: html email outlook

我最近从使用EWS切换到使用Interop.Outlook(see this article)。这个过程非常简单易用!

不幸的是,我有一个在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时,完全相同的正文文本正确显示。

1 个答案:

答案 0 :(得分:2)

  .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)