public void NewEmail(ExchangeEmailEvent newEvent) { _log.InfoFormat("NewEmail itemId length = {0}, timestamp = {1}, id = {2}, username= {3}, eventIds = {4}", newEvent.UniqueIds.Length, newEvent.EventTimeStamp, newEvent.Id, newEvent.SysAdminUnitName, GetReadableEventsList(newEvent.UniqueIds)); var processor = ClassFactory.Get <IExchangeEventsProcessor>(); processor.ProcessNewEmail(newEvent); }
/// <summary> /// Processes new exchange email event. /// Creates <see cref="ExchangeEmailEventExecutor"/> instance and executes with <paramref name="uniqueId"/>. /// </summary> /// <param name="emailEvent">New exchange email event.</param> public void ProcessNewEmail(ExchangeEmailEvent emailEvent) { var userName = emailEvent.SysAdminUnitName; var userConnection = CreateUserConnection(userName, emailEvent.TimeZoneId); Guid mailboxSyncSettingsId = new Guid(emailEvent.Id); string senderEmailAddress = GetMailboxAddress(userConnection, mailboxSyncSettingsId); var parameters = new Dictionary <string, object> { { "SenderEmailAddress", senderEmailAddress }, { "ItemIds", emailEvent.UniqueIds }, { "EventTimestamp", emailEvent.EventTimeStamp } }; try { StartSynchronization(userConnection, parameters); } finally { userConnection?.Close(SessionEndMethod.Logout, false); } }