您好,我们正在尝试通过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
但无法解决该问题,请帮助我们解决该问题。