Pregunta

Me gustaría calcular la antigüedad de los mensajes en un buzón de Exchange para asegurarme de que permanezcan allí durante al menos un minuto antes de que nuestro programa (C ++, MAPI) los procese. De esta manera, el filtro de spam que usamos debería tener tiempo suficiente para hacer su trabajo.

Debido a que el tiempo en la PC donde se ejecuta nuestro programa puede ser diferente del tiempo utilizado por el servidor de Exchange, nuestro programa debe leer la hora del servidor a través de MAPI.

¿Hay una solución elegante para ello? Una forma en la que puedo pensar es modificar un Elemento e inmediatamente leer su PR_LAST_MODIFICATION_TIME , pero me gustaría evitar eso.

Editar:
Nuestro programa es un trabajo por lotes que se ejecuta cada 10 minutos y lee el buzón del diario.

¿Fue útil?

Solución

Supongo que está recibiendo una notificación de evento MAPI cuando el mensaje llega al buzón de Exchange. Yo sugeriría poner estos mensajes en una cola y esperar n segundos (por ejemplo, 60s) antes de procesar el mensaje. Dado que la hora es relativa al evento de notificación, no habrá problemas con respecto a la variación del reloj entre las computadoras.

Al iniciar la aplicación, se vería obligado a hacer esto de nuevo para los mensajes existentes, pero no creo que esto suponga un problema.

Otros consejos

Puedes usar PR_MESSAGE_DELIVERY_TIME .

Según MSDN :

  

La propiedad PR_MESSAGE_DELIVERY_TIME describe la hora en que se guardó el mensaje en el servidor, en lugar de la hora de descarga cuando el proveedor de transporte copió el mensaje desde el servidor al almacén local.

Aparte de eso, cuando su solución se ejecuta en el cliente de todos modos, ¿por qué no usar la hora del cliente en primer lugar? Reloj incorrecto o no, para tiempos relativos (por ejemplo, " un minuto después de ... ") esto no debería hacer ninguna diferencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top