private ImapExtendedMessageRec(ImapMailbox folder, string uidString, string messageId, ImapMailFlags imapMailFlags, long messageSize, int messageSeqNum) : base(uidString, imapMailFlags) { if (string.IsNullOrEmpty(messageId)) { messageId = this.ConstructMessageId(folder); } this.MessageId = messageId; this.MessageSize = messageSize; this.MessageSeqNum = messageSeqNum; }
private string ConstructMessageId(ImapMailbox folder) { if (folder.UidValidity == null) { throw new CannotCreateMessageIdException((long)((ulong)base.Uid), folder.Name); } string text = string.Format("{0}.{1}", folder.UidValidity.Value, base.Uid); MrsTracer.Provider.Debug(string.Format("MessageID missing, using <uidvalidity><uid> instead. Folder = {0}. UID = {1}. MessageId = {2}.", folder.Name, base.Uid, text), new object[0]); return(text); }
public static List <ImapMessageRec> FromImapResultData(ImapMailbox folder, ImapResultData resultData) { IList <string> messageUids = resultData.MessageUids; List <ImapMessageRec> list = new List <ImapMessageRec>(messageUids.Count); for (int i = 0; i < messageUids.Count; i++) { list.Add(new ImapExtendedMessageRec(folder, resultData.MessageUids[i], resultData.MessageIds[i], resultData.MessageFlags[i], resultData.MessageSizes[i], resultData.MessageSeqNums[i])); } return(list); }
private List <ImapClientFolder> EnumerateFolderHierarchy() { ImapMailbox.EnsureDefaultFolderMappingTable(this.ConnectionParameters.Log); List <ImapClientFolder> list = new List <ImapClientFolder>(); int num = 0; int num2 = 0; while (num2 < 2 && num < 20) { num++; char latestSeparatorCharacter = this.GetLatestSeparatorCharacter(list); IList <ImapMailbox> list2 = this.ImapConnection.ListImapMailboxesByLevel(num, latestSeparatorCharacter); if (list2.Count == 0) { num2++; } else { num2 = 0; MrsTracer.Provider.Debug("Number of folders: {0}", new object[] { list2.Count }); List <ImapMailbox> list3 = new List <ImapMailbox>(list2.Count); list3.AddRange(list2); foreach (ImapMailbox imapMailbox in list3) { if (imapMailbox.IsSelectable) { ImapMailbox folder = this.ImapConnection.SelectImapMailbox(imapMailbox); list.Add(new ImapClientFolder(folder)); } else { list.Add(new ImapClientFolder(imapMailbox)); } if (!string.Equals(imapMailbox.Name, "INBOX", StringComparison.OrdinalIgnoreCase) && imapMailbox.Separator != null) { this.inboxFolderHierarchySeparator = new char?(imapMailbox.Separator.Value); } } } } return(list); }
public List <ImapMessageRec> EnumerateMessages(ImapConnection imapConnection, FetchMessagesFlags flags, int?highFetchValue = null, int?lowFetchValue = null) { ImapMailbox imapMailbox = imapConnection.SelectImapMailbox(this.folder); int? numberOfMessages = imapMailbox.NumberOfMessages; if (numberOfMessages == null || numberOfMessages.Value == 0) { MrsTracer.Provider.Debug("Imap folder {0} does not have any messages to be enumerated", new object[] { this.Name }); return(new List <ImapMessageRec>(0)); } int highFetchValue2 = highFetchValue ?? numberOfMessages.Value; int lowFetchValue2 = lowFetchValue ?? 1; EnumerateMessagesParams enumerateParams = new EnumerateMessagesParams(highFetchValue2, lowFetchValue2, flags); IEnumerable <ImapMessageRec> collection = this.EnumerateMessagesInfoFromImapServer(imapConnection, enumerateParams); List <ImapMessageRec> list = new List <ImapMessageRec>(collection); list.Sort(); return(list); }
internal void Config(byte[] folderId, ImapClientFolder folder, ImapMailbox mailbox) { this.FolderId = folderId; this.Folder = folder; this.Mailbox = mailbox; }
public ImapClientFolder(ImapMailbox folder) { this.folder = folder; }
private static ImapDefaultFolderType GetDefaultFolderType(string folderName, out bool preferredMapping, out bool exactCaseSensitiveMatch) { return(ImapMailbox.GetDefaultFolderType(folderName, out preferredMapping, out exactCaseSensitiveMatch)); }