VB.Net - 无法获取 body 的电子邮件 - Exchange 服务

VB.Net - Cannot get body of email - Exchange Services

我有一个 VB.Net Visual Studio 应用程序。使用 Exchange Web 服务,我能够阅读电子邮件并获取其主题和发件人。我很难找到一种方法来阅读它的 body。我找到了四种不同的方法,但它们都给我相同的结果,即文本是这样的:

<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

........ MORE HTML

它似乎给了我电子邮件的 html。 我怎样才能得到电子邮件 body 中的文本?那是什么代码? 这是我尝试过的四种方法的代码:

Dim iv As ItemView = New ItemView(999)
        iv.Traversal = ItemTraversal.Shallow
        Dim inboxItems As FindItemsResults(Of Item) = Nothing
        inboxItems = exch.FindItems(WellKnownFolderName.Inbox, iv)
        Dim Count As Integer = inboxItems.Count

For Each i As Item In inboxItems
            Dim Subject = i.Subject
            Dim oMail As EmailMessage = EmailMessage.Bind(exch, i.Id)
            Dim email = oMail.From.Address.ToString

'FIRST WAY TRIED
            Dim body = i.Body.Text

'SECOND WAY TRIED
            i.Load()
            Dim bodyagain = i.Body

'THIRD WAY TRIED
            Dim item As Item = Item.Bind(exch, i.Id)
            Dim bodynew = item.Body.ToString

'FOURTH WAY TRIED
            For Each msg As EmailMessage In inboxItems
               msg.Load()
               Dim bodyTry = msg.Body
            Next

Next

EWS 默认会 return HTML 正文,这就是为什么您总是得到那个结果的原因。如果您想要文本正文,则需要使用 属性 设置并指定它,然后在使用 Load 或 bind eg

时加载 属性
 Dim bodyPropSet As New PropertySet(BasePropertySet.FirstClassProperties)
 bodyPropSet.Add(ItemSchema.Body)
 bodyPropSet.RequestedBodyType.Value = BodyType.Text
 i.Load(bodyPropSet)
 Dim bodyText = i.Body.Text

如果您经常这样做,那么请考虑使用 LoadPropertiesForItems 来提高效率,因为该代码循环在处理大量项目时性能会很差。