您好,我们正在尝试通过EWS通过java代码访问outlook电子邮件。对于某些电子邮件,我们面临字符引用问题。
错误消息:
[row,col]处的ParseError:[852,6]消息:字符引用“&;#代码Sippet:
try {
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
ExchangeCredentials credentials = new WebCredentials(EMAIL_ID, EMAIL_PWD); service.setCredentials(credentials); service.setUrl(new URI("https://*****************/ews/exchange.asmx")); service.setTraceEnabled(true); ExtendedPropertyDefinition PR_TRANSPORT_MESSAGE_HEADERS = new ExtendedPropertyDefinition(0x007D,MapiPropertyType.String); PropertySet propset = new PropertySet(PropertySet.FirstClassProperties.getBasePropertySet(),ItemSchema.MimeContent,PR_TRANSPORT_MESSAGE_HEADERS); propset.setRequestedBodyType(BodyType.Text);
ItemView view = new ItemView(30);
view.getOrderBy().add(ItemSchema.DateTimeReceived, SortDirection.Descending);
FindItemsResults<Item> findResults;
findResults = service.findItems(WellKnownFolderName.Inbox,"Body:"+currency, view);
if (findResults.getTotalCount() == 0) {
logger.info("INFO:: There is eno emails available");
}
else {
for (Item item : findResults) {
EmailMessage message = EmailMessage.bind(service, item.getId(), new
PropertySet(BasePropertySet.FirstClassProperties, EmailMessageSchema.Attachments));
EmailMessage message = EmailMessage.bind(service, item.getId(), propset);
item.load();
//emailBody = item.getBody().toString();
emailBody = message.getBody().toString();
logger.info("Email Body " + StringUtils.normalizeSpace(emailBody));
Date dateTimeReceived = item.getDateTimeReceived();
SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM-yyyy");
Date todays_date = new Date();
resultList.add(emailBody);
}
item.delete(DeleteMode.MoveToDeletedItems);
}
}} catch (Exception e) {logger.info("Error in Executing outlookEmailRead : " +e.getMessage());}
POM相关性:
<dependency>
<groupId>com.microsoft.ews-java-api</groupId>
<artifactId>ews-java-api</artifactId>
<version>2.0</version>
</dependency>
我发现这是Microsoft已知的问题https://github.com/OfficeDev/ews-java-api/issues/353
但无法解决该问题,请帮助我们解决该问题。