Считывание времени сервера Exchange с помощью MAPI

StackOverflow https://stackoverflow.com/questions/178173

  •  05-07-2019
  •  | 
  •  

Вопрос

Я хотел бы вычислить возраст сообщений в почтовом ящике Exchange, чтобы убедиться, что они находятся там не менее минуты, прежде чем наша программа (C ++, MAPI) обработает их.Таким образом, спам-фильтр, который мы используем должно быть достаточно времени, чтобы выполнить свою работу.

Поскольку время на компьютере, на котором выполняется наша программа, может отличаться от времени, используемого сервером Exchange, наша программа должна считывать время сервера через MAPI.

Есть ли для этого элегантное решение?Один из способов, который я могу придумать, - это изменить какой-то элемент и немедленно прочитать его PR_LAST_MODIFICATION_TIME ( ПОСЛЕДНЕЕ ВРЕМЯ МОДИФИКАЦИИ ), но я бы хотел избежать этого.

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

Это было полезно?

Решение

Я предполагаю, что вы получаете уведомление о событии MAPI, когда сообщение поступает в почтовый ящик Exchange.Я бы предложил поместить эти сообщения в очередь и ждать n секунды (например,60 секунд) перед обработкой сообщения.Поскольку время указано относительно события уведомления, проблем с перемещением часов между компьютерами не возникнет.

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

Другие советы

Вы можете использовать PR_MESSAGE_DELIVERY_TIME.

Согласно MSDN:

Тот самый PR_MESSAGE_DELIVERY_TIME свойство описывает время, когда сообщение было сохранено на сервере, а не время загрузки, когда поставщик транспорта скопировал сообщение с сервера в локальное хранилище.

Кроме этого - когда ваше решение все равно запускается на клиенте - почему бы в первую очередь не использовать время клиента?Неправильные часы или нет для относительного времени (например,"через минуту после ...") это не должно иметь никакого значения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top