Ejemplo n.º 1
0
        /// <summary>
        /// Method for retrieve the mail messages for IMAP4 protocol.
        /// </summary>
        /// <param name="mailbox">The mailbox for retrieve messages.</param>
        /// <param name="beginIndex">The begin index for retrieve the messages.</param>
        /// <param name="increment">The increment for begin index for retrieve the messages.</param>
        /// <returns>The mail messages.</returns>
        public BindingList<MailMessage> RetrieveMessages(string mailbox, int beginIndex, int increment)
        {
            BindingList<MailMessage> ret = new BindingList<MailMessage>();

            MailMessage mailMessage;
            Header header;

            Mailbox inbox = this.Imap4Client.SelectMailbox(mailbox);
            Fetch fetch = inbox.Fetch;
            int messageCount = inbox.MessageCount;
            for (int i = beginIndex; i <= beginIndex + increment; i++)
            {
                if (i <= messageCount)
                {
                    header = fetch.HeaderObject(i);
                    mailMessage = new MailMessage();
                    mailMessage.FillMessage(header);
                    mailMessage.BaseIndex = i;
                    ret.Add(mailMessage);
                }
            }
            return ret;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Get a mail message basend on message identifier.
        /// </summary>
        /// <param name="mailbox">The mailbox for retrieve the message.</param>
        /// <param name="mailMessage">The mail message.</param>
        /// <returns>The ActiveUp.Net.Mail.Message object.</returns>
        public ActiveUp.Net.Mail.Message GetMessage(string mailbox, MailMessage mailMessage)
        {
            ActiveUp.Net.Mail.Message ret = null;
            ActiveUp.Net.Mail.Message message = null;
            Mailbox inbox = this.Imap4Client.SelectMailbox(mailbox);
            Fetch fetch = inbox.Fetch;
            int messageCount = inbox.MessageCount;

            int upIndex = mailMessage.BaseIndex;
            int downIndex = mailMessage.BaseIndex;

            // search up and down.
            while (downIndex > 0 || upIndex <= messageCount)
            {

                if (downIndex > 0 && downIndex <= messageCount)
                {
                    message = fetch.MessageObject(downIndex);
                    if (message.MessageId != null && message.MessageId.Equals(mailMessage.Id))
                    {
                        ret = message;
                        break;
                    }
                }

                if (upIndex <= messageCount && upIndex > 0)
                {
                    message = fetch.MessageObject(upIndex);
                    if (message.MessageId != null && message.MessageId.Equals(mailMessage.Id))
                    {
                        ret = message;
                        break;
                    }                    
                }

                downIndex--;
                upIndex++;
            }

            return ret;
        }