1

我正在使用 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 样式等来获取消息正文的最佳方法是什么。谢谢您的回复!

更新我的解决方案: 我已经停止使用这个变体。我的问题是空行,所以现在我通过下一个函数处理 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) 
4

1 回答 1

2

它要么是纯文本,要么是 HTML,没有其他风格。因此,您可以维护的唯一“布局”是换行符,或者您必须将整个 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

于 2014-01-21T16:01:18.350 回答