2012-06-28 12 views
25

Ich benutze EWS, um Austausch-E-Mails zu erhalten, aber wie kann ich einfachen Text aus E-Mail-Körper, ohne HTML?
Jetzt verwende ich dieses:EWS body Klartext

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

Antwort

57

Im PropertySet Ihres Artikels Sie die RequestedBodyType zu BodyType.Text einstellen müssen. Hier ein Beispiel:

.........  
$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

Dank erhalten, es funktioniert. – JNM

+7

Beachten Sie, dass das PropertySet für service.FindItems() und item.Load() verwendet werden muss, damit dies ordnungsgemäß funktioniert. – Dave

+0

Ich erhalte diese Ausnahme beim Ausführen dieser Microsoft.Exchange.WebServices.Data.ServiceObjectPropertyException: Sie müssen diese Eigenschaft laden oder zuweisen, bevor Sie den Wert – kolexinfos

3

Sie

service.LoadPropertiesForItems(findResults, itempropertyset); 

Eigenschaften laden für alle Artikel

+0

lesen können oder wenn Sie die eindeutige ID des Elements kennen: 'PropertySet plainTextPropertySet = new PropertySet (BasePropertySet. FirstClassProperties) { RequestedBodyType = BodyType.Text, }; EmailMessage emailMessage = EmailMessage.Bind (service, uniqueId, plainTextPropertySet); string body = emailMessage.Body.Text; ' – SamFlushing

5

In Powershell nutzen können. Sie müssen lediglich die RequestedBodyType-Eigenschaft des von Ihnen verwendeten Eigenschaftensatzes festlegen.

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

Was ist' $ event' in diesem Fall ?? '$ itmId' ???? - Ich habe eine EmailMessage, und ich benutze genau den gleichen Code wie die letzten 4 Zeilen, aber es gibt immer noch HTML anstelle von Klartext zurück. Ich werde versuchen, mich daran zu erinnern, zurück zu kommen, wenn ich es herausfinde ...: - / –

4

Ich hatte das gleiche Problem:

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

Der kürzeste Weg, wie dies zu tun ist es:

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

Dies hat den Vorteil bekommen hat, dass Sie sowohl Text als Körper und html Körper