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 来提高效率,因为该代码循环在处理大量项目时性能会很差。
我有一个 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 来提高效率,因为该代码循环在处理大量项目时性能会很差。