protected override void VisitTnefPart(TnefPart entity)
 {
     // extract any attachments in the MS-TNEF part
     foreach (var attachment in entity.ExtractAttachments())
     {
         handleAttachment(attachment, null);
     }
 }
Esempio n. 2
0
        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());
 }
Esempio n. 4
0
        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;
                    }