protected void CreateRightResult(Message eml_message, string out_file_path) { var result = new RightParserResult(); result.From = new TestAddress(); result.From.Email = eml_message.From.Email; result.From.Name = eml_message.From.Name; result.To = new List<TestAddress>(); foreach (var to_adresses in eml_message.To) { result.To.Add(new TestAddress {Name = to_adresses.Name, Email = to_adresses.Email}); } result.Cc = new List<TestAddress>(); foreach (var cc_adresses in eml_message.Cc) { result.Cc.Add(new TestAddress {Name = cc_adresses.Name, Email = cc_adresses.Email}); } result.Subject = eml_message.Subject; result.AttachmentCount = eml_message.Attachments.Count; result.UnknownPatsCount = eml_message.UnknownDispositionMimeParts.Count; result.HtmlBody = eml_message.BodyHtml.Text; result.HtmlCharset = eml_message.BodyHtml.Charset; result.HtmlEncoding = eml_message.BodyHtml.ContentTransferEncoding; result.TextBody = eml_message.BodyText.Text; result.TextCharset = eml_message.BodyText.Charset; result.TextEncoding = eml_message.BodyText.ContentTransferEncoding; result.ToXml(out_file_path); }
protected void Test(string eml_file_name) { var eml_message = Parser.ParseMessageFromFile(TestFolderPath + eml_file_name); var right_result = RightParserResult.FromXml(RightParserResultsPath + eml_file_name.Replace(".eml", ".xml")); #if NEED_OUT eml_message.StoreToFile(test_results_path + eml_file_name); #endif Assert.AreEqual(right_result.From.Email, eml_message.From.Email); Assert.AreEqual(right_result.From.Name, eml_message.From.Name); Assert.AreEqual(right_result.To.Count, eml_message.To.Count); var to_enumerator = eml_message.To.OrderBy(x => x.Email).GetEnumerator(); foreach (var adress in right_result.To.OrderBy(x => x.Email)) { to_enumerator.MoveNext(); Assert.AreEqual(adress.Email, to_enumerator.Current.Email); Assert.AreEqual(adress.Name, to_enumerator.Current.Name); } var cc_enumerator = eml_message.Cc.OrderBy(x => x.Email).GetEnumerator(); foreach (var adress in right_result.Cc.OrderBy(x => x.Email)) { cc_enumerator.MoveNext(); Assert.AreEqual(adress.Email, cc_enumerator.Current.Email); Assert.AreEqual(adress.Name, cc_enumerator.Current.Name); } Assert.AreEqual(right_result.Subject, eml_message.Subject); Assert.AreEqual(right_result.AttachmentCount, eml_message.Attachments.Count); Assert.AreEqual(right_result.UnknownPatsCount, eml_message.UnknownDispositionMimeParts.Count); //Replace needed for correct file loading Assert.AreEqual(right_result.HtmlBody, eml_message.BodyHtml.Text); Assert.AreEqual(right_result.HtmlEncoding, eml_message.BodyHtml.ContentTransferEncoding); Assert.AreEqual(right_result.HtmlCharset, eml_message.BodyHtml.Charset); Assert.AreEqual(right_result.TextBody, eml_message.BodyText.Text); Assert.AreEqual(right_result.TextCharset, eml_message.BodyText.Charset); Assert.AreEqual(right_result.TextEncoding, eml_message.BodyText.ContentTransferEncoding); }
protected void Test(string emlFileName) { var mimeMessage = MailClient.ParseMimeMessage(TestFolderPath + emlFileName); var emlMessage = ConvertToRightResult(mimeMessage); var rightResult = RightParserResult.FromXml(RightParserResultsPath + emlFileName.Replace(".eml", ".xml")); #if NEED_OUT mimeMessage.WriteTo(TestFolderPath + emlFileName); #endif Assert.AreEqual(rightResult.From.Email, emlMessage.From.Email); Assert.AreEqual(rightResult.From.Name, emlMessage.From.Name); Assert.AreEqual(rightResult.To.Count, emlMessage.To.Count); var toEnumerator = emlMessage.To.OrderBy(x => x.Email).GetEnumerator(); foreach (var adress in rightResult.To.OrderBy(x => x.Email)) { toEnumerator.MoveNext(); Assert.AreEqual(adress.Email, toEnumerator.Current.Email); Assert.AreEqual(adress.Name, toEnumerator.Current.Name); } var ccEnumerator = emlMessage.Cc.OrderBy(x => x.Email).GetEnumerator(); foreach (var adress in rightResult.Cc.OrderBy(x => x.Email)) { ccEnumerator.MoveNext(); Assert.AreEqual(adress.Email, ccEnumerator.Current.Email); Assert.AreEqual(adress.Name, ccEnumerator.Current.Name); } Assert.AreEqual(rightResult.Subject, emlMessage.Subject); Assert.AreEqual(rightResult.AttachmentCount, emlMessage.AttachmentCount); //Assert.AreEqual(rightResult.UnknownPatsCount, emlMessage.UnknownDispositionMimeParts.Count); Assert.AreEqual(rightResult.TextBody, emlMessage.TextBody); Assert.AreEqual(rightResult.TextCharset, emlMessage.TextCharset); //Assert.AreEqual(rightResult.TextContentDisposition, emlMessage.TextContentDisposition); Assert.AreEqual(rightResult.HtmlBody, emlMessage.HtmlBody); Assert.AreEqual(rightResult.HtmlCharset, emlMessage.HtmlCharset); //Assert.AreEqual(rightResult.HtmlContentDisposition, emlMessage.HtmlContentDisposition); }
protected void CreateRightResult(Message eml_message, string out_file_path) { var result = new RightParserResult(); result.From = new TestAddress(); result.From.Email = eml_message.From.Email; result.From.Name = eml_message.From.Name; result.To = new List <TestAddress>(); foreach (var to_adresses in eml_message.To) { result.To.Add(new TestAddress { Name = to_adresses.Name, Email = to_adresses.Email }); } result.Cc = new List <TestAddress>(); foreach (var cc_adresses in eml_message.Cc) { result.Cc.Add(new TestAddress { Name = cc_adresses.Name, Email = cc_adresses.Email }); } result.Subject = eml_message.Subject; result.AttachmentCount = eml_message.Attachments.Count; result.UnknownPatsCount = eml_message.UnknownDispositionMimeParts.Count; result.HtmlBody = eml_message.BodyHtml.Text; result.HtmlCharset = eml_message.BodyHtml.Charset; result.HtmlEncoding = eml_message.BodyHtml.ContentTransferEncoding; result.TextBody = eml_message.BodyText.Text; result.TextCharset = eml_message.BodyText.Charset; result.TextEncoding = eml_message.BodyText.ContentTransferEncoding; result.ToXml(out_file_path); }
protected RightParserResult ConvertToRightResult(MimeMessage emlMessage) { var from = emlMessage.From.Mailboxes.FirstOrDefault(); var result = new RightParserResult { From = new TestAddress { Email = from == null ? "" : from.Address, Name = from == null ? "" : from.Name }, To = new List <TestAddress>() }; foreach (var toAdresses in emlMessage.To.Mailboxes) { result.To.Add(new TestAddress { Name = toAdresses.Name, Email = toAdresses.Address }); } result.Cc = new List <TestAddress>(); foreach (var ccAdresses in emlMessage.Cc.Mailboxes) { result.Cc.Add(new TestAddress { Name = ccAdresses.Name, Email = ccAdresses.Address }); } result.Subject = emlMessage.Subject; result.AttachmentCount = emlMessage.Attachments.Count(); //result.UnknownPatsCount = emlMessage.Body.; result.TextBody = emlMessage.TextBody ?? ""; result.HtmlBody = emlMessage.HtmlBody ?? ""; var bodyParts = emlMessage.BodyParts; var mimeEntities = bodyParts as IList <MimeEntity> ?? bodyParts.ToList(); var textPart = mimeEntities.FirstOrDefault(b => b.ContentType.MimeType == "text/plain") as TextPart; var htmlPart = mimeEntities.FirstOrDefault(b => b.ContentType.MimeType == "text/html") as TextPart; var internalMessages = mimeEntities.Where(t => t.ContentType.IsMimeType("message", "*")).ToList(); if (internalMessages.Any()) { result.AttachmentCount += internalMessages.Count(); } if (textPart != null) { if (textPart.ContentType.Charset != null) { var encoding = EncodingTools.GetEncodingByCodepageName(textPart.ContentType.Charset); if (!encoding.HeaderName.Equals(textPart.ContentType.Charset, StringComparison.InvariantCultureIgnoreCase)) { result.TextBody = textPart.GetText(encoding); result.TextCharset = encoding.HeaderName.ToLowerInvariant(); } else { result.TextCharset = textPart.ContentType.Charset.ToLowerInvariant(); } } else { //TODO: Try to find charset in other parts and detect encoding and right text result.TextCharset = "utf-8"; } } else { result.TextCharset = "utf-8"; } if (htmlPart != null) { if (htmlPart.ContentType.Charset != null) { var encoding = EncodingTools.GetEncodingByCodepageName(htmlPart.ContentType.Charset); if (!encoding.HeaderName.Equals(htmlPart.ContentType.Charset, StringComparison.InvariantCultureIgnoreCase)) { result.HtmlBody = htmlPart.GetText(encoding); result.HtmlCharset = htmlPart.ContentType.Charset; } else { result.HtmlCharset = htmlPart.ContentType.Charset.ToLowerInvariant(); } } else { //TODO: Try to find charset in other parts and detect encoding and right text result.HtmlCharset = "utf-8"; } } else { result.HtmlCharset = "utf-8"; } return(result); }