2014-01-21 2 views
1

Я использую EWS Java API 1.2 для получения электронной почты с сервера. И у меня есть проблема: Я использую свойство, как это:EWS Java API 1.2 - лучший способ проанализировать тело письма

PropertySet itemPropertySet = new PropertySet(BasePropertySet.FirstClassProperties); 
itemPropertySet.setRequestedBodyType(BodyType.Text); 
... 
String body = message.getBody().toString(); 

В этом примере я получаю тело в виде обычного текста. Но мне нужно сохранить форматирование тела (например, пустые строки). Когда я использую BodyType.HTML, я получаю все html-теги, стили css и т. Д. Каков наилучший способ получить текст сообщения с сохранением форматирования и исключая теги html, стили css и т. Д. Спасибо за ваши ответы!

Обновление с моим решением: Я остановился на this variant. Моя проблема была в пустых строках, так что теперь я обрабатывать BR и P-теги на следующие функции:

public void handleStartTag(Tag t, MutableAttributeSet a, int pos) //To handle Tag.BODY 
public void handleSimpleTag(Tag t, MutableAttributeSet a, int pos) //To handle Tag.BR and adding '\n' 
public void handleEndTag(Tag t, int pos) //To handle Tag.P (and adding '\n') and Tag.BODY 
public void handleText(char[] data, int pos) 
+0

[ссылка] (http://stackoverflow.com/questions/18125685/how-do-i-convert-a-formatted-email-into-plain-text-in-java) –

ответ

2

Это либо простой текст или HTML, there are no other flavours. Таким образом, либо единственный «макет», который вы можете поддерживать, это переводы строк, либо вам нужно обрабатывать весь HTML как blob.

Если вы хотите что-нибудь более интересное, возможно, вы можете найти библиотеку для разбора HTML-кода, но тогда вы останетесь с решением, в каком формате вы хотите следующего; Возможно, HTML для RTF?
(И вам придется снова делать RTF в HTML, если вы также переписываете EWS).

КСТАТИ Я удивлён писать «например, пустые строки»: текст делает содержать перевод строки:

(Добавлено 22-1-2014 в ответ на ваш комментарий :)
Когда я отредактировать почты в Outlook, как это:

- Sample text starts - 
Next line followed by 1 empty line 

Next line followed by 2 empty lines 


- Sample text ends - 

и получить его с SOAPUI, как текст, который я получаю:

<t:Body BodyType="Text">- Sample text starts - 
Next line followed by 1 empty line 

Next line followed by 2 empty lines 


- Sample text ends -</t:Body> 

Я предлагаю вам хорошо взглянуть на ваш код или код API Java EWS, если исчезнут линейные переводы.

SOAPUI - отличный инструмент для запроса ваших фактических данных, но вам нужно будет научиться строить запросы SOAP. Для этого я использовал Inside Microsoft® Exchange Server 2007 Web Services.

+0

Благодарим вас за ответ! Я писал о пустых строках, потому что, когда в письме есть строки, разделенные несколькими новыми строками в моей результирующей строке (_body_), у меня есть только один символ ** \ n ** - для новых строк, без двух или более ** \ n * * sybmols один рядом с другим. –

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