protected override void VisitTnefPart(TnefPart entity) { // extract any attachments in the MS-TNEF part foreach (var attachment in entity.ExtractAttachments()) { handleAttachment(attachment, null); } }
static void TestTnefParser(string path, TnefComplianceStatus expected = TnefComplianceStatus.Compliant) { var message = ParseTnefMessage(path + ".tnef", expected); var names = File.ReadAllLines(path + ".list"); foreach (var name in names) { bool found = false; foreach (var part in message.BodyParts.OfType <MimePart> ()) { if (part.FileName == name) { found = true; break; } } if (!found) { Assert.Fail("Failed to locate attachment: {0}", name); } } // now use TnefPart to do the same thing using (var content = File.OpenRead(path + ".tnef")) { var tnef = new TnefPart { Content = new MimeContent(content) }; var attachments = tnef.ExtractAttachments().ToList(); foreach (var name in names) { bool found = false; foreach (var part in attachments.OfType <MimePart> ()) { if (part.FileName == name) { found = true; break; } } if (!found) { Assert.Fail("Failed to locate attachment in TnefPart: {0}", name); } } } }
protected override void VisitTnefPart(TnefPart entity) { // extract any attachments in the MS-TNEF part attachments.AddRange(entity.ExtractAttachments()); }
static void TestTnefParser(string path, TnefComplianceStatus expected = TnefComplianceStatus.Compliant) { var message = ParseTnefMessage(path + ".tnef", expected); var tnefName = Path.GetFileName(path + ".tnef"); var names = File.ReadAllLines(path + ".list"); foreach (var name in names) { bool found = false; foreach (var part in message.BodyParts.OfType <MimePart> ()) { if (part.FileName == name) { found = true; break; } } if (!found) { Assert.Fail("Failed to locate attachment: {0}", name); } } // now use TnefPart to do the same thing using (var content = File.OpenRead(path + ".tnef")) { var tnef = new TnefPart { Content = new MimeContent(content) }; var attachments = tnef.ExtractAttachments().ToList(); // Step 1: make sure we've extracted the body and all of the attachments foreach (var name in names) { bool found = false; foreach (var part in attachments.OfType <MimePart> ()) { if (part is TextPart && string.IsNullOrEmpty(part.FileName)) { var basename = Path.GetFileNameWithoutExtension(name); var extension = Path.GetExtension(name); string subtype; switch (extension) { case ".html": subtype = "html"; break; case ".rtf": subtype = "rtf"; break; default: subtype = "plain"; break; } if (basename == "body" && part.ContentType.IsMimeType("text", subtype)) { found = true; break; } } else if (part.FileName == name) { found = true; break; } } if (!found) { Assert.Fail("Failed to locate attachment in TnefPart: {0}", name); } } // Step 2: verify that the content of the extracted attachments matches up with the expected content int untitled = 1; foreach (var part in attachments.OfType <MimePart> ()) { var isText = false; string fileName; if (part is TextPart text && string.IsNullOrEmpty(part.FileName)) { if (text.IsHtml) { fileName = "message.html"; } else if (text.IsRichText) { fileName = "message.rtf"; } else { fileName = "message.txt"; } isText = true; }