Пример #1
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));
            }
        }