Пример #1
0
 // Метод получения альтернативного способа просмотра письма
 private void GetView(string text)
 {
     if (text.Contains("\r\n\r\n"))
     {
         // Заголовок альтернативного способа просмотра письма
         string header = text.Substring(0, text.IndexOf("\r\n\r\n"));
         // Тело альтернативного способа просмотра письма
         string body = text.Substring(text.IndexOf("\r\n\r\n") + 4);
         // Тип контента альтернативного способа просмотра письма
         ContentType ct = ParserMessage.GetContentType(header);
         // Получение транспортной кодировки
         TransferEncoding transEncode = ParserMessage.GetBodyTransfer(header);
         // Получение текста письма в формате html-страницы
         if (ct.MediaType == MediaTypeNames.Text.Html)
         {
             BodyEncoding         = ParserMessage.MyGetEncoding(ct.CharSet);
             BodyTransferEncoding = transEncode;
             Body       = body;
             IsBodyHtml = true;
         }
         // Получение текста письма в виде обычного текста
         else if (ct.MediaType == MediaTypeNames.Text.Plain && !IsBodyHtml)
         {
             BodyEncoding         = ParserMessage.MyGetEncoding(ct.CharSet);
             BodyTransferEncoding = transEncode;
             Body = body;
         }
     }
 }
Пример #2
0
        // Создание письма с заголовком
        public MyMailMessage(string header) : base()
        {
            Headers.Add("main", header.Substring(header.IndexOf("\r\n") + 2));
            num    = Convert.ToInt32(ParserMessage.FirstFromTo(header, " ", " "));
            id     = ParserMessage.GetID(header);
            Sender = From = ParserMessage.GetFrom(header);
            MailAddressCollection temp = ParserMessage.GetTo(header);

            foreach (MailAddress adr in temp)
            {
                To.Add(adr);
            }
            Subject = ParserMessage.GetSubject(header);
            temp    = ParserMessage.GetReply(header);
            foreach (MailAddress adr in temp)
            {
                ReplyToList.Add(adr);
            }
            temp = ParserMessage.GetCC(header);
            foreach (MailAddress adr in temp)
            {
                CC.Add(adr);
            }
            temp = ParserMessage.GetBcc(header);
            foreach (MailAddress adr in temp)
            {
                Bcc.Add(adr);
            }
            date                 = ParserMessage.GetDate(header);
            displayDate          = new DateString(date);
            mainContentType      = ParserMessage.GetContentType(header);
            BodyEncoding         = ParserMessage.MyGetEncoding(mainContentType.CharSet);
            BodyTransferEncoding = ParserMessage.GetBodyTransfer(header);
            isHaveAttachments    = (mainContentType.MediaType == "multipart/mixed" || mainContentType.MediaType == "multipart/related");
            IsBodyHtml           = (mainContentType.MediaType == MediaTypeNames.Text.Html);
            myAttachments        = new List <MyAttachment>();
        }
Пример #3
0
        // Метод получения вложения
        private void GetAttach(string text)
        {
            // Получение заголовка вложения
            string header = text.Substring(0, text.IndexOf("\r\n\r\n"));
            // Получение тела вложения
            string body = text.Substring(text.IndexOf("\r\n\r\n") + 4);
            // Тип контента вложения
            ContentType ct = ParserMessage.GetContentType(header);
            // Расположение контента
            ContentDisposition cd = ParserMessage.GetDisposition(header);
            // Получение транспортной кодировки
            TransferEncoding transEncode = ParserMessage.GetBodyTransfer(header);

            // Декодирование строки с именем вложения
            if (ct.Name != null)
            {
                ct.Name = ParserMessage.DecodeString(ct.Name);
            }
            // Добавление вложения внутри вложения
            if (ct.MediaType == "multipart/mixed" || ct.MediaType == "multipart/related")
            {
                AddAttachments(body, ct.Boundary);
            }
            // Получение текста письма в формате html-страницы
            else if (ct.MediaType == MediaTypeNames.Text.Html)
            {
                if (cd == null)
                {
                    BodyEncoding         = ParserMessage.MyGetEncoding(ct.CharSet);
                    BodyTransferEncoding = transEncode;
                    Body       = body;
                    IsBodyHtml = true;
                }
                else if (cd.DispositionType != DispositionTypeNames.Attachment)
                {
                    BodyEncoding         = ParserMessage.MyGetEncoding(ct.CharSet);
                    BodyTransferEncoding = transEncode;
                    Body       = body;
                    IsBodyHtml = true;
                }
            }
            // Получение текста письма в виде обычного текста
            else if (ct.MediaType == MediaTypeNames.Text.Plain && !IsBodyHtml)
            {
                if (cd == null)
                {
                    BodyEncoding         = ParserMessage.MyGetEncoding(ct.CharSet);
                    BodyTransferEncoding = transEncode;
                    Body = body;
                }
                else if (cd.DispositionType != DispositionTypeNames.Attachment)
                {
                    BodyEncoding         = ParserMessage.MyGetEncoding(ct.CharSet);
                    BodyTransferEncoding = transEncode;
                    Body = body;
                }
            }
            // Добавление альтернативных способов представления текста письма
            else if (ct.MediaType == "multipart/alternative")
            {
                AddViews(body, ct.Boundary);
            }
            // Декодирование тела вложения и добавление в список
            else
            {
                body = ParserMessage.GetCodeLine(body, Encoding.Default, transEncode);
                myAttachments.Add(new MyAttachment(ct, body));
            }
        }