html - HTML 中的 Interop.Outlook 消息显示为纯文本

标签 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 时可以正确显示完全相同的正文。

最佳答案

  .Body = MessageBody

Body MailItem 类的属性是一个字符串,表示 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)

关于html - HTML 中的 Interop.Outlook 消息显示为纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29902099/

相关文章:

python - 使用 python 访问 Outlook 文件夹

html - 为什么我的 transparant 'second' 背景图像不居中?

html - 我无法在 Bootstrap 选项卡中添加新的列表项

sql - T-SQL : checking for email format

email - 如何将电子邮件发送给域名中带有变音符号的收件人?

c# - Microsoft.Office.Interop.Outlook 错误 - 文件 filename.ics 不是有效的 Internet 日历文件

php - 使用 PHP Html5 流式传输视频

javascript - 在 Canvas 上旋转 2 个图像

email - 从 IMAP 创建电子邮件线程?

c# - 如何将 MailMesage 保存到 .msg 文件?