2014-03-26 4 views
0

Есть ли способ удалить теги HTML из статьи, которая находится в диапазоне от ItemAttachment? Я могу получить только текст с позиции. Но не от предмета, который от ItemAttachment. Вот мой код:Получить только текст элемента из ItemAttachment (EWS Managed API)

foreach (ItemAttachment itemAttach in item.Attachments.OfType<ItemAttachment>()) 
{ 
    Console.WriteLine(itemAttach.Name); 

    itemAttach.Load(); 

    PropertySet propSet = new PropertySet(); 
    propSet.RequestedBodyType = BodyType.Text; 
    propSet.BasePropertySet = BasePropertySet.FirstClassProperties; 

    itemAttach.Item.Load(propSet); 

    Console.WriteLine(itemAttach.Item.Body.Text); 
} 

Он получит это исключение

This operation isn't supported on attachments

Я попытался привязкой к службе обмена с идентификатором товара.

Это также дает мне какое-то исключение! Просьба дать несколько советов о том, как я могу это сделать.

ответ

0

Jin,

Исключение вы получаете связано с набором свойств, который вы создаете. Я не вижу ваш код для получения предметов, поэтому я не могу определить точную причину. Мне удалось получить следующий код для работы на моей машине. Вы должны иметь возможность изменять его для своих нужд.

// Return the first ten items. 
ItemView view = new ItemView(10); 

// Set the query string to only find emails with attachments. 
string querystring = "HasAttachments:true Kind:email"; 

// Find the items in the Inbox. 
FindItemsResults<Item> results = service.FindItems(WellKnownFolderName.Inbox, querystring, view); 

// Loop through the results. 
foreach (EmailMessage email in results) 
{ 
    // Load the email message with the attachments 
    email.Load(new PropertySet(EmailMessageSchema.Attachments)); 

    // Loop through the attachments. 
    foreach (Attachment attachment in email.Attachments) 
    { 
     // Only process item attachments.    
     if (attachment is ItemAttachment) 
     { 
      ItemAttachment itemAttachment = attachment as ItemAttachment; 

      // Load the attachment. 
      itemAttachment.Load(new PropertySet(EmailMessageSchema.TextBody)); 

      // Output the body. 
      Console.WriteLine(itemAttachment.Item.TextBody); 
     } 
} 

Для каждого письма, у которого было прикрепление элемента, я смог увидеть тело элемента с удаленными тегами HTML.

Надеюсь, это поможет. Если это решает вашу проблему, отметьте это сообщение как ответ.

Спасибо,

--- Боб ---

+0

Спасибо вам за коды. Но я не думаю, что моя программа может работать с свойством _TextBody_, так как мой Exchange Server - 2010. Если я не ошибаюсь, _TextBody_ для Exchange Server 2013. Я изменил свои коды на 'PropertySet propSet = new PropertySet();' 'propSet .RequestedBodyType = BodyType.Text; ' ' itemAttach.Load (propSet); 'Он также не работает. Но на этот раз исключение не найдено! Я не знаю, почему это не работает. –

+0

Я изменил пару строк кода в моем примере, подобно тому, что вы сделали, и я смог вывести тело сообщения. Проблема по-прежнему заключается в том, что теги HTML не удаляются, поэтому вам придется разбирать текст. Вот еще одно сообщение, в котором показано, как удалить теги HTML: http://stackoverflow.com/questions/4878452/remove-html-tags-in-string –

+0

Спасибо, Боб! Я рассмотрю вопрос о разборе. Сейчас очень мало вероятность того, что привязка может быть _ItemAttachment_ на основе моего наблюдения. –

Смежные вопросы