예제 #1
0
        /// <inheritdoc cref="IExchangeListenerManager.StartListener"/>
        public void StartListener(Guid mailboxId)
        {
            if (GetIsFeatureDisabled("ExchangeListenerEnabled"))
            {
                return;
            }
            var mailbox = _mailboxService.GetMailbox(mailboxId);

            if (!mailbox.CheckSynchronizationSettings())
            {
                _log.Warn($"mailbox {mailbox.SenderEmailAddress} synchronization settings not valid");
                return;
            }
            byte[] data = GetConnectionParams(mailboxId);
            TryDoListenerAction(mailbox.SenderEmailAddress, () => {
                ExecuteListenerAction(data, ExchangeListenerActions.Create);
            });
        }
예제 #2
0
        /// <summary>
        /// Starts mailbox synchronization.
        /// </summary>
        /// <param name="mailbox"><see cref="Mailbox"/> instance.</param>
        /// <param name="filters">Synchronization session filters.</param>
        private void StartSynchronization(Mailbox mailbox, string filters)
        {
            if (!mailbox.CheckSynchronizationSettings())
            {
                _log.Warn($"mailbox {mailbox.SenderEmailAddress} synchronization settings not valid");
                return;
            }
            var    credentials   = GetCredentials(mailbox);
            var    emailProvider = GetProvider();
            Action action        = () => {
                emailProvider.StartSynchronization(credentials, filters);
            };

            try {
                ListenerUtils.TryDoListenerAction(action, credentials.SenderEmailAddress, _userConnection);
            } catch (Exception e) {
                _log.Error($"Synchronization of {_senderEmailAddress} failed", e);
                throw;
            }
        }