예제 #1
0
        private async Task <List <MailSummary> > executeLoadMore()
        {
            try
            {
                folder.Open(FolderAccess.ReadOnly);
                int lowBound, highBound;
                highBound = folder.Count - 20 * current_page - 1;
                lowBound  = highBound - 19;
                if (lowBound <= 0)
                {
                    lowBound = 0;
                }
                List <MailSummary> temp = new List <MailSummary>();
                var summarys            = await folder.FetchAsync(lowBound, highBound, MessageSummaryItems.Full | MessageSummaryItems.UniqueId);

                for (int i = summarys.Count - 1; i >= 0; i--)
                {
                    temp.Add(new MailSummary(summarys[i].Index, summarys[i].NormalizedSubject, summarys[i].Date, summarys[i].Envelope.Sender));
                }
                return(temp);
            }
            catch
            {
                return(null);
            }
        }
예제 #2
0
        public async Task <long> ReadMails()
        {
            Stopwatch stopWhatch = new Stopwatch();

            stopWhatch.Start();

            try
            {
                var mailsTask = serverFolder.FetchAsync(0, -1, SummaryItems);

                foreach (var message in await mailsTask)
                {
                    if (Messages.Count(x => x.serverMessage.UniqueId == message.UniqueId) == 0)
                    {
                        Messages.Add(new MailMessage(message, serverFolder));
                    }
                }
            }
            catch (Exception ex)
            {
                return(0);
            }

            stopWhatch.Stop();
            return(stopWhatch.ElapsedMilliseconds);
        }
예제 #3
0
        private async void LoadMessages()
        {
            if (lFolder.Count > 0)
            {
                var summaries = await lFolder.FetchAsync(0, -1, MessageSummaryItems.Full | MessageSummaryItems.UniqueId);

                incarcaOptiuneaSelectata(summaries, lFolder);
            }
        }
예제 #4
0
        async Task LoadMessagesAsync(Task task)
        {
            await task;

            messages.Clear();
            Nodes.Clear();
            map.Clear();

            if (!folder.IsOpen)
            {
                await folder.OpenAsync(FolderAccess.ReadOnly);
            }

            if (folder.Count > 0)
            {
                var summaries = await folder.FetchAsync(0, -1, request);

                AddMessageSummaries(summaries);
            }

            folder.CountChanged += CountChanged;
        }
예제 #5
0
        async void LoadMessages()
        {
            messages.Clear();
            Nodes.Clear();
            map.Clear();

            if (folder.Count > 0)
            {
                var summaries = await folder.FetchAsync(0, -1, MessageSummaryItems.Full | MessageSummaryItems.UniqueId);

                AddMessageSummaries(summaries);
            }

            folder.MessagesArrived += MessagesArrived_TaskThread;
        }
예제 #6
0
        private async Task searchMessages(IMailFolder inbox)
        {
            //Create a list to store messages that match the search criteria.
            List <MimeMessage> matchingMessages = new List <MimeMessage>();

            foreach (var summary in await inbox.FetchAsync(0, -1, MessageSummaryItems.Full | MessageSummaryItems.UniqueId))
            {
                foreach (var term in _subjectSearchTerms)
                {
                    if (summary.Envelope.Subject != null)
                    {
                        if (summary.Envelope.Subject.ToLower().Contains(term.ToLower()))
                        {
                            var message = await inbox.GetMessageAsync(summary.UniqueId);

                            matchingMessages.Add(message);
                        }
                    }
                }

                foreach (var term in _bodySearchTerms)
                {
                    if (summary.TextBody != null)
                    {
                        if (summary.TextBody.ToString().ToLower().Contains(term.ToLower()))
                        {
                            var message = await inbox.GetMessageAsync(summary.UniqueId);

                            matchingMessages.Add(message);
                        }
                    }
                }
            }

            await sendToDatabase(matchingMessages);
        }
예제 #7
0
        private int mailsOnPage = 15; //number of mails on page for one AJAX

        public async Task <ActionResult> MailList(int page = 0)
        {
            IMailFolder            folder = (IMailFolder)Session["folder"];
            List <IMessageSummary> fetch  = (List <IMessageSummary>)Session["messages"];

            if (page == 0)
            {
                folder.Open(FolderAccess.ReadWrite);
                fetch = new List <IMessageSummary>(await folder.FetchAsync(0, -1, MessageSummaryItems.UniqueId | MessageSummaryItems.Flags));
                fetch.Reverse();
                Session["messages"] = fetch;
            }
            int         start = page * mailsOnPage;
            int         end   = ((fetch.Count - mailsOnPage) > start) ? start + mailsOnPage - 1 : fetch.Count - 1;
            List <Mail> mails = new List <Mail>();

            for (int i = start; i <= end; i++)
            {
                var headers = folder.GetHeaders(fetch[i].UniqueId);
                await Task.Run(() => mails.Add(new Mail(fetch[i], headers)));
            }

            return(PartialView(mails));
        }