Exchange WS «Указанный объект не найден в хранилище». ошибка

Мы используем Exchange 2007 WS для обработки почтовых папок и сталкиваемся с различными проблемами, если пытаемся переслать уже полученное сообщение. Наш процесс:

  • Служба Windows отслеживает папку почтового ящика, при обнаружении новой почты мы обрабатываем информацию и перемещаем элемент в «Обработанную папку» и сохраняем идентификатор сообщения Exchange.
  • Пользователи могут выбрать пересылку почты извне. Мы используем API Exchange, чтобы найти элемент, используя идентификатор сообщения, который мы сохранили ранее, а затем снова используем API для пересылки.

За исключением того, что поиск почты снова оказывается довольно ненадежным. Мы регулярно получаем следующую ошибку:

Указанный объект не найден в магазине.

Есть ли лучший/более надежный способ добиться того же? Документация по Exchange WS довольно скудна.


person penderi    schedule 20.04.2009    source источник


Ответы (4)


Это ошибка в API управления Microsoft Exchange. вот ссылка для получения дополнительной информации http://maheshde.blogspot.com/2010/09/exchange-web-service-specified-object.html

person Mahesh    schedule 13.09.2010

Вы сохраняете идентификатор только что найденного сообщения или сообщения после его перемещения в папку «Обработанные»? Идентификатор изменится, когда он переместится в новую папку.

Метод, рекомендованный в книге Внутри Microsoft Exchange Server 2007 Web Services заключается в том, чтобы захватить PR_SEARCH_KEY (0x300B, Binary) вновь обнаруженного элемента, а затем переместить его в папку «Обработано». Затем вы можете найти его в новой папке на основе PR_SEARCH_KEY и получить новый идентификатор сообщения для его пересылки.

person Joe Doyle    schedule 20.04.2009

Я пришел к выводу, что это происходит со мной, потому что, пока мое приложение обрабатывает электронные письма, кто-то другой одновременно возится с электронной почтой.

Итак, чтобы решить эту проблему, я помещаю код в try catch и смотрю, является ли исключение == тот объект, который не найден в магазине, если это так, я просто пропускаю его и перехожу к следующему элементу. Так что для не имеет проблем.

person Exzile    schedule 27.11.2013

Я написал программу, которая читает электронные письма в папке «Входящие», загружает вложения в указанную папку, записывает информацию об электронной почте и сохраненный путь к базе данных и, наконец, удаляет электронную почту. Я запускаю эту программу как службу Windows. После того, как все тесты закончены, я запускаю эту программу на главный сервер и запускаю ее. Программа работает успешно, но иногда я получаю эту ошибку. Я все проверил и, наконец, обнаружил, что забыл остановить службу на своем компьютере. 2 программы, которые работают на моем компьютере и на реальном сервере, проверяют один и тот же почтовый ящик одновременно. Если вы получили эту ошибку, убедитесь, что только одна программа может обрабатывать один и тот же почтовый ящик.

person cihadakt    schedule 04.03.2013