Example #1
0
        private IEnumerable <ImapMessageRec> EnumerateMessagesInfoFromImapServer(ImapConnection imapConnection, EnumerateMessagesParams enumerateParams)
        {
            if (enumerateParams.LowFetchValue > enumerateParams.HighFetchValue)
            {
                return(new List <ImapMessageRec>(0));
            }
            ImapResultData messageInfoByRange = imapConnection.GetMessageInfoByRange(enumerateParams.LowFetchValue.ToString(CultureInfo.InvariantCulture), enumerateParams.HighFetchValue.ToString(CultureInfo.InvariantCulture), enumerateParams.FetchMessagesFlags.HasFlag(FetchMessagesFlags.FetchByUid), enumerateParams.FetchMessagesFlags.HasFlag(FetchMessagesFlags.IncludeExtendedData) ? ImapConnection.MessageInfoDataItemsForNewMessages : ImapConnection.MessageInfoDataItemsForChangesOnly);

            return(this.GetImapMessageRecsFromResultData(messageInfoByRange, enumerateParams.FetchMessagesFlags));
        }
Example #2
0
        public static List <ImapMessageRec> FromImapResultData(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 ImapMessageRec(resultData.MessageUids[i], resultData.MessageFlags[i]));
            }
            return(list);
        }
Example #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);
        }
        private void FetchMessage(string messageUid, out Stream mimeStream, out ExDateTime?internalDate)
        {
            base.CheckDisposed();
            internalDate = null;
            mimeStream   = null;
            ImapResultData messageItemByUid = base.ImapConnection.GetMessageItemByUid(messageUid, ImapConnection.MessageBodyDataItems);

            if (messageItemByUid.MessageStream == null)
            {
                throw new UnableToFetchMimeStreamException(messageUid);
            }
            mimeStream   = messageItemByUid.MessageStream;
            internalDate = ((messageItemByUid.MessageInternalDates != null && messageItemByUid.MessageInternalDates.Count == 1) ? messageItemByUid.MessageInternalDates[0] : null);
        }
Example #5
0
        private IEnumerable <ImapMessageRec> GetImapMessageRecsFromResultData(ImapResultData resultData, FetchMessagesFlags fetchFlags)
        {
            IList <string>        messageUids  = resultData.MessageUids;
            IList <ImapMailFlags> messageFlags = resultData.MessageFlags;
            bool flag = messageUids != null && messageUids.Count > 0 && messageFlags != null && messageFlags.Count > 0;

            if (!flag)
            {
                return(new List <ImapMessageRec>(0));
            }
            if (fetchFlags.HasFlag(FetchMessagesFlags.IncludeExtendedData))
            {
                return(ImapExtendedMessageRec.FromImapResultData(this.folder, resultData));
            }
            return(ImapMessageRec.FromImapResultData(resultData));
        }
Example #6
0
        private IEnumerable <ImapMessageRec> LookupMessagesInfoFromImapServer(ImapConnection imapConnection, LookupMessagesParams lookupParams)
        {
            ImapResultData messageInfoByRange = imapConnection.GetMessageInfoByRange(lookupParams.GetUidFetchString(), null, lookupParams.FetchMessagesFlags.HasFlag(FetchMessagesFlags.FetchByUid), lookupParams.FetchMessagesFlags.HasFlag(FetchMessagesFlags.IncludeExtendedData) ? ImapConnection.MessageInfoDataItemsForNewMessages : ImapConnection.MessageInfoDataItemsForChangesOnly);

            return(this.GetImapMessageRecsFromResultData(messageInfoByRange, lookupParams.FetchMessagesFlags));
        }