2012-06-28 9 views
25

私はEWSを使用して交換メールを取得していますが、htmlのないメール本文からプレーンテキストを取得するにはどうすればよいですか?あなたはBodyType.TextにRequestedBodyTypeを設定する必要があなたの項目のプロパティセットでEWS本文平文

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

答えて

57


は今、私はこれを使用しています。ここでは例です:

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); 
+0

ありがとうございます。 – JNM

+7

これが正しく動作するには、Property.FindItems()とitem.Load()の両方でPropertySetを使用する必要があることに注意してください。 – Dave

+0

このMicrosoft.Exchange.WebServices.Data.ServiceObjectPropertyExceptionを実行する際にこの例外が発生します。この値を読み取る前にこのプロパティをロードまたは割り当てる必要があります。値が – kolexinfos

3

あなたはPowerShellですべての項目

+0

であるか、項目一意のIDを知っている場合は、「PropertySet plainTextPropertySet = new PropertySet(BasePropertySet。 FirstClassProperties) { RequestedBodyType = BodyType.Text、 }; EmailMessage emailMessage = EmailMessage.Bind(service、uniqueId、plainTextPropertySet); 文字列body = emailMessage.Body.Text; ' – SamFlushing

5

のプロパティをロードするために

service.LoadPropertiesForItems(findResults, itempropertyset); 

を使用することができます。

.........  
$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() 
+0

この場合、' $ event'とは何ですか? '$ itmId'? - 私はEmailMessageを持っています。私はあなたの最後の4行と全く同じコードを使用していますが、まだ平文の代わりにHTMLを返しています。私はそれを把握して戻ってくることを覚えようとします: - / –

4

私は同じ問題がありました。使用しているプロパティセットのRequestedBodyTypeプロパティを設定するだけです。

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

それを行うための最短の方法は、このようなものです:

item.Load(新しいプロパティセット(BasePropertySet.IdOnly、ItemSchema.TextBody、EmailMessageSchema.Body));

これは、テキスト本文とHTML本文の両方を取得できるという利点があります。

関連する問題