java - EWS Java API 1.2 - 解析信件正文的最佳方法

标签 java exchangewebservices ewsjavaapi

我正在使用 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) 

最佳答案

它可以是纯文本或 HTML,there are no other flavours 。因此,您可以维护的唯一“布局”就是换行符,或者您必须将整个 HTML 作为一个 blob 进行处理。

如果你想要更高级的东西,也许你可以找到一个库来解析 HTML,但是接下来你需要决定你想要什么格式;也许是 HTML 到 RTF?
(如果您还写回 EWS,则必须再次将 RTF 转换为 HTML)。

顺便说一句,我很惊讶你写了“例如空行”:文本确实包含换行符:

(2014 年 1 月 22 日添加以回应您的评论:)
当我在 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为此。

关于java - EWS Java API 1.2 - 解析信件正文的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21259620/

相关文章:

java - 如何在eclipse中打开现有的tomcat web应用程序项目

ruby-on-rails - Rails Viewpoint 发送消息附件

ruby - 视口(viewport)未在 Ubuntu Server VM 中连接

java - 使用 Exchange Web 服务的 Maven 项目中缺少类

java - EWS-Java-API - EmailMessage.send 到 java.lang.NullPointerException : format == null

java - ews-java-api 创建新约会

java - 如何在Java中向Date对象添加当前时间戳?

java - 使用 JQuery 解析 JSON 有困难

java - URL中的方括号导致Tomcat异常

java - 在 Android 上连接到 EWS 的其他方法