2014-01-21 22 views
1

我使用EWS Java API 1.2從服務器獲取電子郵件。我有一個問題: 我使用性質是這樣的:EWS Java API 1.2 - 解析letter體的最佳方式

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也許?
(如果你還寫回EWS,你將不得不再次執行RTF到HTML)。

順便說一句,我驚訝你寫「如空行」:文本確實包含換行符:

(新增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> 

如果換行正在消失,我建議您仔細閱讀一下代碼或EWS Java API的代碼。

SOAPUI是查詢實際數據的好工具,但您必須學習如何構造SOAP請求。我使用Inside Microsoft® Exchange Server 2007 Web Services

+0

謝謝你的回覆!我寫了空行,因爲在字母中,在結果字符串(_body_)中有幾條新行分隔的行,我只有一個** \ n ** - 新行的符號,沒有兩行或多行** \ n * * sybmols相鄰。 –