首页 > 解决方案 > 使用 microsoft EWS java api 阅读带有乱码的电子邮件失败

问题描述

我们正在使用

'com.microsoft.ews-java-api', name: 'ews-java-api', version: '2.0')

从交易所获取电子邮件。该函数正在获取所有电子邮件,然后我们将其放入队列并进行处理。一些电子邮件里面有乱码,因为对所有电子邮件都进行了一次提取,即使一封电子邮件里面的值无效,我们也会收到整个提取的错误。知道如何处理吗?

这是我们正在使用的代码

ExchangeService exchangeService = exchangeLoginServiceImpl.login(emailAccountConfDt);
            if (exchangeService != null) {
                ItemView view = new ItemView(emailAccountConfDt.getMailsPerRead());
                view.getOrderBy().add(ItemSchema.DateTimeSent, SortDirection.Ascending);
                ArrayList<Item> items = exchangeService.findItems(WellKnownFolderName.Inbox, view).getItems();
                int size = items.size();
                LOG.info("Found [" + size + "] items in account [" + accountName + "]");
                for (int i = 0; i < size; i++) {
                    Item item = items.get(i);
                    ItemId itemId = item.getId();
                    String uniqueId = itemId.getUniqueId();
                    try{  
                        PropertySet ps = new PropertySet();
                        ps.setRequestedBodyType(BodyType.HTML);
                        ps.setBasePropertySet(BasePropertySet.FirstClassProperties);
                        EmailMessage emailMessage = EmailMessage.bind(exchangeService, itemId, ps);

这就是错误

Failed to read email message, email item uniqueId [AAMkADRjMzQ3MmI3LTA0N2EtNDg2MS1iMjU1LWQ5NWI4MmVhNzE2YQBGAAAAAADGYjhcu3c7QqV6OMBExQ46BwAXK7DYUuoGRYgsIfGMRJCTAAAAkw/iAAAXK7DYUuoGRYgsIfGMRJCTAAEROP9bAAA=] in account [XXXXXX]
microsoft.exchange.webservices.data.core.exception.service.remote.ServiceRequestException: The request failed. Illegal character entity: expansion character (code 0xc
 at [row,col {unknown-source}]: [108,16]
    at microsoft.exchange.webservices.data.core.request.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:74)
    at microsoft.exchange.webservices.data.core.request.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:158)
    at microsoft.exchange.webservices.data.core.ExchangeService.internalBindToItems(ExchangeService.java:1343)
    at microsoft.exchange.webservices.data.core.ExchangeService.bindToItem(ExchangeService.java:1378)
    at microsoft.exchange.webservices.data.core.ExchangeService.bindToItem(ExchangeService.java:1395)
    at microsoft.exchange.webservices.data.core.service.item.EmailMessage.bind(EmailMessage.java:94)

交换版本是

ExchangeVersion.Exchange2010_SP2

标签: java

解决方案


推荐阅读