/// <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; }
/// <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; }