Исключение при попытке получить электронное письмо, содержащее специальные символы, с помощью EWS из приложения Java.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Исключение при попытке получить электронное письмо, содержащее специальные символы, с помощью EWS из приложения Java.

Сообщение Anonymous »

Мы внедрили автоматизированное приложение-обработчик, которое принимает и обрабатывает входящую почту из почтового ящика на сервере Exchange. Для получения и обработки электронной почты мы используем интерфейс EWS и Java-библиотеку EWS (версия 2.0) в нашем Java-приложении (работающем на Java 17). Недавно мы столкнулись с проблемой, когда получили электронные письма, содержащие специальные символы, такие как SOH (ASCII 01), STX (ASCII 02), что привело к следующему исключению:

Код: Выделить всё

microsoft.exchange.webservices.data.core.exception.service.local.ServiceObjectPropertyException: This property was requested, but it wasn't returned by the server.
at microsoft.exchange.webservices.data.core.PropertyBag.getPropertyValueOrException(PropertyBag.java:346)
at microsoft.exchange.webservices.data.core.PropertyBag.getObjectFromPropertyDefinition(PropertyBag.java:760)
at microsoft.exchange.webservices.data.core.service.item.Item.getDateTimeReceived(Item.java:669)
При замене только этих специальных символов обработка того же электронного письма работает нормально.
Наш код выглядит следующим образом:

Код: Выделить всё

itemPropertySet = new PropertySet(BasePropertySet.FirstClassProperties);
itemPropertySet.setRequestedBodyType(BodyType.Text);

...

Folder folder = findFolder(queueId);
ItemView view = new ItemView (MESSAGE_VIEW_SIZE);
view.setPropertySet(itemPropertySet);
view.getOrderBy().add(ItemSchema.DateTimeReceived, SortDirection.Ascending);
FindItemsResults findResults = service.findItems(folder.getId(), view);
messageIterator = findResults.getItems().iterator();

...

while (messageIterator.hasNext()) {
Item item = messageIterator.next();
if (item instanceof EmailMessage) {
EmailMessage emailMessage = (EmailMessage)item;

try {
// Load message content
emailMessage.load(itemPropertySet);
String body = emailMessage.getBody().toString();
final String sender = emailMessage.getSender().getAddress();
//Further processing of email body

} catch (Exception e) {
log.error(e.getMessage());
}
}
}
Будем очень благодарны за любую помощь, поскольку мы немного застряли в этом вопросе. :-)

Подробнее здесь: https://stackoverflow.com/questions/791 ... sing-ews-f
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»