29

我使用 EWS 获取交换电子邮件,但如何从电子邮件正文中获取纯文本,而不使用 html?
现在我用这个:

EmailMessage item = (EmailMessage)outbox.Items[i];
item.Load();
item.Body.Text
4

5 回答 5

68

在您的项目的 PropertySet 中,您需要将 RequestedBodyType 设置为 BodyType.Text。这是一个例子:

PropertySet itempropertyset = new PropertySet(BasePropertySet.FirstClassProperties);
itempropertyset.RequestedBodyType = BodyType.Text;
ItemView itemview = new ItemView(1000);
itemview.PropertySet = itempropertyset;

FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, "subject:TODO", itemview);
Item item = findResults.FirstOrDefault();
item.Load(itempropertyset);
Console.WriteLine(item.Body);
于 2012-06-28T14:07:29.767 回答
7

在 powershell 中:

    .........    
$message = [Microsoft.Exchange.WebServices.Data.EmailMessage]::Bind($event.MessageData,$itmId)

$PropertySet = New-Object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties)
$PropertySet.RequestedBodyType = [Microsoft.Exchange.WebServices.Data.BodyType]::Text
$message.Load($PropertySet)
$bodyText= $message.Body.toString()
于 2013-10-22T02:15:50.823 回答
7

我遇到过同样的问题。您所要做的就是设置您正在使用的属性集的 RequestedBodyType 属性。

    PropertySet propSet = new PropertySet(BasePropertySet.IdOnly, EmailMessageSchema.Subject, EmailMessageSchema.Body);
    propSet.RequestedBodyType = BodyType.Text;
    var email = EmailMessage.Bind(service, item.Id, propSet);
于 2015-12-09T05:18:51.873 回答
4

最短的方法是这样的:

item.Load(new PropertySet(BasePropertySet.IdOnly, ItemSchema.TextBody, EmailMessageSchema.Body));

这样做的好处是您可以同时获得 text-body 和 html-body。

于 2017-06-06T13:41:47.243 回答
3

您可以使用

service.LoadPropertiesForItems(findResults, itempropertyset);

加载所有项目的属性

于 2013-02-14T10:38:30.740 回答