Пример #1
0
        public MailMessage(MimeMessage message, int folder = 1, bool unread = false, string chainId = "",
                           string streamId = "")
        {
            if (message == null)
            {
                throw new ArgumentNullException("message");
            }

            Date          = IsDateCorrect(message.Date.UtcDateTime) ? message.Date.UtcDateTime : DateTime.UtcNow;
            MimeMessageId = (string.IsNullOrEmpty(message.MessageId) ? MailUtil.CreateMessageId() : message.MessageId)
                            .Trim(new[] { '<', '>' });
            ChainId       = string.IsNullOrEmpty(chainId) ? MimeMessageId : chainId;
            MimeReplyToId = ChainId.Equals(MimeMessageId) ? null : message.InReplyTo.Trim('<', '>');
            ReplyTo       = message.ReplyTo.ToString();
            From          = message.From.ToString();
            FromEmail     = message.From != null && message.From.Mailboxes != null && message.From.Mailboxes.Any()
                ? message.From.Mailboxes.First().Address
                : "";
            ToList    = message.To.Mailboxes.Select(s => new MailAddress(s.Address, s.Name)).ToList();
            To        = string.Join(", ", message.To.Mailboxes.Select(s => s.ToString()));
            CcList    = message.Cc.Mailboxes.Select(s => new MailAddress(s.Address, s.Name)).ToList();
            Cc        = string.Join(", ", message.Cc.Mailboxes.Select(s => s.ToString()));
            Bcc       = string.Join(", ", message.Bcc.Mailboxes.Select(s => s.ToString()));
            Subject   = message.Subject ?? string.Empty;
            Important = message.Importance == MessageImportance.High || message.Priority == MessagePriority.Urgent;

            TextBodyOnly = false;

            Introduction = "";

            Attachments = new List <MailAttachment>();

            HtmlBodyStream = new MemoryStream();

            ExtractMainParts(message);

            Size = HtmlBodyStream.Length > 0 ? HtmlBodyStream.Length : HtmlBody.Length;

            HeaderFieldNames = new NameValueCollection();

            message.Headers
            .ToList()
            .ForEach(h => HeaderFieldNames.Add(h.Field, h.Value));

            Folder   = folder;
            IsNew    = unread;
            StreamId = string.IsNullOrEmpty(streamId) ? MailUtil.CreateStreamId() : streamId;

            LoadCalendarInfo(message);
        }
Пример #2
0
        public MailMessage(MimeMessage message, int folder = 1, bool unread = false, string chainId = "",
                           string streamId = "")
        {
            if (message == null)
            {
                throw new ArgumentNullException("message");
            }

            Date          = IsDateCorrect(message.Date.UtcDateTime) ? message.Date.UtcDateTime : DateTime.UtcNow;
            MimeMessageId = (string.IsNullOrEmpty(message.MessageId) ? MailUtil.CreateMessageId() : message.MessageId)
                            .Trim(new[] { '<', '>' });
            ChainId       = string.IsNullOrEmpty(chainId) ? MimeMessageId : chainId;
            MimeReplyToId = ChainId.Equals(MimeMessageId) ? null : message.InReplyTo.Trim(new[] { '<', '>' });
            ReplyTo       = message.ReplyTo.ToString();
            From          = message.From.ToString();
            FromEmail     = message.From != null && message.From.Mailboxes != null && message.From.Mailboxes.Any()
                ? message.From.Mailboxes.First().Address
                : "";
            ToList       = message.To.Mailboxes.Select(s => new MailAddress(s.Address, s.Name)).ToList();
            To           = string.Join(", ", message.To.Mailboxes.Select(s => s.ToString()));
            CcList       = message.Cc.Mailboxes.Select(s => new MailAddress(s.Address, s.Name)).ToList();
            Cc           = string.Join(", ", message.Cc.Mailboxes.Select(s => s.ToString()));
            Bcc          = string.Join(", ", message.Bcc.Mailboxes.Select(s => s.ToString()));
            Subject      = message.Subject ?? string.Empty;
            Important    = message.Importance == MessageImportance.High || message.Priority == MessagePriority.Urgent;
            TextBodyOnly = false;

            if (message.HtmlBody == null && message.TextBody == null)
            {
                HtmlBody        = "";
                Introduction    = "";
                IsBodyCorrupted = true;

                var messagePart = new MessagePart
                {
                    Message            = message,
                    ContentDisposition = new ContentDisposition
                    {
                        FileName = "message.eml"
                    }
                };

                LoadAttachments(new List <MimeEntity> {
                    messagePart
                });
            }
            else
            {
                SetHtmlBodyAndIntroduction(message);
            }

            Size             = HtmlBody.Length;
            HeaderFieldNames = new NameValueCollection();

            if (message.Headers.Any())
            {
                foreach (var header in message.Headers)
                {
                    HeaderFieldNames.Add(header.Field, header.Value);
                }
            }

            Folder   = folder;
            IsNew    = unread;
            StreamId = string.IsNullOrEmpty(streamId) ? MailUtil.CreateStreamId() : streamId;

            LoadAttachments(message.Attachments);
            LoadEmbeddedAttachments(message);
            LoadCalendarInfo(message);
        }
Пример #3
0
        public override bool Equals(object obj)
        {
            Store storeObj = (Store)obj;

            return(StoreId.Equals(storeObj.StoreId) && ChainId.Equals(storeObj.ChainId));
        }