Ejemplo n.º 1
0
        public void ClearSessionCache()
        {
            if (!IsSessionCacheEmpty)
            {
                ImapSessionCache.Clear();

                _lastTimeCacheWasCleared = DateTime.UtcNow;
            }
        }
Ejemplo n.º 2
0
 private void UpdateSessionCache(IIMapServerSettings setting)
 {
     if (!ImapSessionCache.ContainsKey(setting)) // Add if session doesn't already exist
     {
         ImapSessionCache.TryAdd(setting, _imapMailReader.CreateConnection(setting));
     }
     else
     {
         RefreshSessionIfExpired(setting);
     }
 }
Ejemplo n.º 3
0
        private void RefreshSessionIfExpired(IIMapServerSettings setting)
        {
            var session = ImapSessionCache.FirstOrDefault(s => s.Key == setting).Value;

            if (session != null && !session.IsConnected())
            {
                IImapMailReader removed;
                if (ImapSessionCache.TryRemove(setting, out removed) && removed != null)
                {
                    ImapSessionCache.TryAdd(setting, _imapMailReader.CreateConnection(setting));
                }
            }
        }
Ejemplo n.º 4
0
        public List <InboxMessageWrapper> GetUnreadInboxMails(int messageCount)
        {
            var activeImapSessions = ImapSessionCache.Where(session => session.Value.HasUnreadMail()).ToArray();

            _currentlyRetrievingEmails = activeImapSessions.Any();

            var retrievedEmails = new List <InboxMessageWrapper>();

            foreach (var session in activeImapSessions)
            {
                foreach (var unreadMail in session.Value.GetUnreadMails("INBOX", messageCount))
                {
                    retrievedEmails.Add(new InboxMessageWrapper
                    {
                        ImapSetting = session.Key,
                        Message     = unreadMail
                    });
                }
            }
            ;

            return(retrievedEmails);
        }