예제 #1
0
        public override void Parse(string Tag, string Data)
        {
            base.Parse(Tag, Data);
            this.IsUIDCommand = false;

            string messageIDs   = Data.Substring(0, Data.IndexOf(' '));
            string fetchListStr = Data.Substring(Data.IndexOf(' ') + 1);

            this.MessageID = new MessageIDList(messageIDs);
            this.fetchData = new FetchDataList(fetchListStr);
        }
예제 #2
0
        private FetchResponse Fetch(MailMessage mail, FetchDataList fetchDataList)
        {
            FetchResponse response = new FetchResponse(mail.SequenceNumber);

            FetchDataItem body = null;

            foreach (var data in fetchDataList)
            {
                switch (data)
                {
                case FetchDataItemType.All:
                    break;

                case FetchDataItemType.Body:
                    if (body == null)
                    {
                        body = CreateMailBodyDataItem(mail);
                    }
                    break;

                case FetchDataItemType.BodyPeek:
                    if (body == null)
                    {
                        body = CreateMailBodyDataItem(mail);
                    }
                    break;

                case FetchDataItemType.BodyStructure:
                    break;

                case FetchDataItemType.Envelope:
                    break;

                case FetchDataItemType.Fast:
                    break;

                case FetchDataItemType.Flags:
                    response.Items.Add(new FetchDataItem(FetchDataItemType.Flags, CreateFlaggedString(mail)));
                    break;

                case FetchDataItemType.Full:
                    break;

                case FetchDataItemType.InternalDate:
                    response.Items.Add(
                        new FetchDataItem(
                            FetchDataItemType.InternalDate,
                            string.Format("\"{0:d-MMM-yyyy HH:mm:ss} {1}\"", mail.Timestamp, mail.Timestamp.ToString("zzz").Replace(":", ""))
                            )
                        );
                    break;

                case FetchDataItemType.Rfc822:
                    break;

                case FetchDataItemType.Rfc822Header:
                    break;

                case FetchDataItemType.Rfc822Size:
                    response.Items.Add(new FetchDataItem(FetchDataItemType.Rfc822Size, mail.Size.ToString()));
                    break;

                case FetchDataItemType.Rfc822Text:
                    break;

                case FetchDataItemType.Uid:
                    response.Items.Add(new FetchDataItem(FetchDataItemType.Uid, mail.Uid.ToString()));
                    break;

                default:
                    break;
                }
            }
            //put the BODY[] item to the last
            if (body != null)
            {
                response.Items.Add(body);
            }
            return(response);
        }