EWS 正文纯文本

Posted

技术标签:

【中文标题】EWS 正文纯文本【英文标题】:EWS body plain text 【发布时间】:2012-06-29 22:19:14 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

在您的项目的 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);

【讨论】:

请注意,必须将 PropertySet 用于 service.FindItems() 和 item.Load() 才能正常工作。 我在执行此操作时遇到此异常 Microsoft.Exchange.WebServices.Data.ServiceObjectPropertyException:您必须先加载或分配此属性,然后才能读取其值 @JNM 仅供参考。通过 Aurinko.io REST API,有一种比 EWS 更方便的方式来使用 Exchange 服务器。来自文档apirefs.aurinko.io/#operation/message 的示例【参考方案2】:

在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()

【讨论】:

在这种情况下$event 是什么? $itmId???? - 我有一个 EmailMessage,我使用的代码与你最后 4 行完全相同,但它仍然返回 HTML 而不是纯文本。如果我弄明白了,我会尽量记住回来... :-/ 如果其他人好奇,只需使用您的 EWS 服务对象代替 $event。【参考方案3】:

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

    PropertySet propSet = new PropertySet(BasePropertySet.IdOnly, EmailMessageSchema.Subject, EmailMessageSchema.Body);
    propSet.RequestedBodyType = BodyType.Text;
    var email = EmailMessage.Bind(service, item.Id, propSet);

【讨论】:

【参考方案4】:

最短的方法是这样的:

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

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

【讨论】:

【参考方案5】:

你可以使用

service.LoadPropertiesForItems(findResults, itempropertyset);

加载所有项目的属性

【讨论】:

或者如果您知道项目唯一 ID:PropertySet plainTextPropertySet = new PropertySet(BasePropertySet.FirstClassProperties) RequestedBodyType = BodyType.Text, ; EmailMessage emailMessage = EmailMessage.Bind(service, uniqueId, plainTextPropertySet); string body = emailMessage.Body.Text;

以上是关于EWS 正文纯文本的主要内容,如果未能解决你的问题,请参考以下文章

EWS 搜索子字符串的约会正文

EWS 电子邮件正文返回为空?

如何使用 EWS 获取电子邮件正文、收据、发件人和抄送信息?

如何编辑 Mailchimp 自动化电子邮件的纯文本版本?

MIME php邮件仅显示文本/纯文本版本[关闭]

Rails - 邮件,将正文作为纯文本获取