// Метод получения вложения 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)); } }