示例#1
0
        private void TryProcessInternalDate(string data)
        {
            Match dateMatch = Expressions.InternalDateRex.Match(data);

            if (!dateMatch.Success)
            {
                return;
            }

            InternalDate = HeaderFieldParser.ParseDate(dateMatch.Groups[1].Value);

            _downloadProgress = _downloadProgress | MessageFetchMode.InternalDate;
        }
示例#2
0
        private void BindHeadersToFields()
        {
            foreach (var header in Headers)
            {
                switch (header.Key)
                {
                case MessageHeader.MimeVersion:
                    MimeVersion = header.Value;
                    break;

                case MessageHeader.Sender:
                    Sender = HeaderFieldParser.ParseMailAddress(header.Value);
                    break;

                case MessageHeader.Subject:
                    Subject = StringDecoder.Decode(header.Value, true);
                    break;

                case MessageHeader.To:
                    if (To.Count == 0)
                    {
                        To = HeaderFieldParser.ParseMailAddressCollection(header.Value);
                    }
                    else
                    {
                        foreach (MailAddress addr in HeaderFieldParser.ParseMailAddressCollection(header.Value))
                        {
                            To.Add(addr);
                        }
                    }
                    break;

                case MessageHeader.DeliveredTo:
                    To.Add(HeaderFieldParser.ParseMailAddress(header.Value));
                    break;

                case MessageHeader.From:
                    From = HeaderFieldParser.ParseMailAddress(header.Value);
                    break;

                case MessageHeader.Cc:
                    Cc = HeaderFieldParser.ParseMailAddressCollection(header.Value);
                    break;

                case MessageHeader.Bcc:
                    Bcc = HeaderFieldParser.ParseMailAddressCollection(header.Value);
                    break;

                case MessageHeader.Organisation:
                case MessageHeader.Organization:
                    Organization = StringDecoder.Decode(header.Value, true);
                    break;

                case MessageHeader.Date:
                    Date = HeaderFieldParser.ParseDate(header.Value);
                    break;

                case MessageHeader.Importance:
                    Importance = header.Value.ToMessageImportance();
                    break;

                case MessageHeader.ContentType:
                    ContentType = HeaderFieldParser.ParseContentType(header.Value);
                    break;

                case MessageHeader.ContentTransferEncoding:
                    ContentTransferEncoding = header.Value;
                    break;

                case MessageHeader.MessageId:
                    MessageId = header.Value;
                    break;

                case MessageHeader.Mailer:
                case MessageHeader.XMailer:
                    Mailer = header.Value;
                    break;

                case MessageHeader.ReplyTo:
                    ReplyTo = HeaderFieldParser.ParseMailAddressCollection(header.Value);
                    break;

                case MessageHeader.Sensitivity:
                    Sensitivity = header.Value.ToMessageSensitivity();
                    break;

                case MessageHeader.ReturnPath:
                    ReturnPath =
                        HeaderFieldParser.ParseMailAddress(
                            header.Value.Split(new[] { '\r', '\n' }, StringSplitOptions.None)
                            .Distinct()
                            .FirstOrDefault());
                    break;

                case MessageHeader.ContentLanguage:
                case MessageHeader.Language:
                    Language = header.Value;
                    break;

                case MessageHeader.InReplyTo:
                    InReplyTo = header.Value;
                    break;

                case MessageHeader.Comments:
                    Comments = header.Value;
                    break;
                }
            }
        }