我最近从使用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时,完全相同的正文文本正确显示。
答案 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)