コード例 #1
0
 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;
 }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
 internal void Config(byte[] folderId, ImapClientFolder folder, ImapMailbox mailbox)
 {
     this.FolderId = folderId;
     this.Folder   = folder;
     this.Mailbox  = mailbox;
 }
コード例 #7
0
 public ImapClientFolder(ImapMailbox folder)
 {
     this.folder = folder;
 }
コード例 #8
0
 private static ImapDefaultFolderType GetDefaultFolderType(string folderName, out bool preferredMapping, out bool exactCaseSensitiveMatch)
 {
     return(ImapMailbox.GetDefaultFolderType(folderName, out preferredMapping, out exactCaseSensitiveMatch));
 }