public void SetUp()
 {
     _smtpserver = TestAddressHelper.GetSmtpServer();
 }
        public void TestJapaneseHtmlAndTextQPEncoding()
        {
            //SmtpServer smtpserver=TestAddressHelper.GetSmtpServer();
            System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("Shift_JIS");

            EmailAddress japanesefromaddress = new EmailAddress(TestAddressHelper.GetFromAddress().Email, "日本語", EncodingType.QuotedPrintable, encoding);
            EmailAddress japanesetoaddress   = new EmailAddress(TestAddressHelper.GetToAddress().Email, "日本語", EncodingType.QuotedPrintable, encoding);
            EmailMessage emailmessage        = new EmailMessage();

            emailmessage.HeaderEncoding = DotNetOpenMail.Encoding.EncodingType.QuotedPrintable;
            System.Text.Encoding jencoding = System.Text.Encoding.GetEncoding("iso-2022-jp");
            //emailmessage.HeaderCharSet=System.Text.Encoding.GetEncoding("Shift_JIS");
            emailmessage.HeaderCharSet = jencoding;

            log.Debug("ENCODING IS " + jencoding.EncodingName);
            log.Debug("IN HEADER:" + jencoding.HeaderName);
            log.Debug("IN BODY:" + jencoding.BodyName);
            log.Debug("CODE PAGE:" + jencoding.CodePage);
            log.Debug("WebName:" + jencoding.WebName);
            log.Debug("WINDOWS CODE PAGE:" + jencoding.WindowsCodePage);
            emailmessage.FromAddress = japanesefromaddress;
            emailmessage.AddToAddress(japanesetoaddress);
            emailmessage.Subject  = "日本語 - Quoted Printable";
            emailmessage.TextPart = new TextAttachment("東京、日本語");
            //emailmessage.TextPart.CharSet+AD0AIg-Shift_JIS+ACIAOw-
            emailmessage.TextPart.CharSet  = jencoding;
            emailmessage.TextPart.Encoding = DotNetOpenMail.Encoding.EncodingType.QuotedPrintable;
            emailmessage.HtmlPart          = new HtmlAttachment("<html><body>東京、日本語</body></html>");
            //emailmessage.HtmlPart.CharSet+AD0AIg-Shift_JIS+ACIAOw-
            emailmessage.HtmlPart.CharSet  = jencoding;
            emailmessage.HtmlPart.Encoding = DotNetOpenMail.Encoding.EncodingType.QuotedPrintable;

            emailmessage.Send(_smtpserver);

            String       content = emailmessage.ToDataString();
            StringReader sr      = new StringReader(content);

            log.Debug(content);

            int    i    = 0;
            String line = null;


            bool toHeaderEncoded      = false;
            bool fromHeaderEncoded    = false;
            bool subjectHeaderEncoded = false;
            bool htmlEncoded          = false;
            bool textEncoded          = false;
            bool hasPlainText         = false;
            bool hasHtmlText          = false;



            while ((line = sr.ReadLine()) != null)
            {
                i++;
                //log.Debug("FOUND +ACIAKw-line);
                if (line.IndexOf("To: =?iso-2022-jp?Q?=93=FA=96{=8C=EA?= <" + japanesetoaddress.Email + ">") == 0)
                {
                    toHeaderEncoded = true;
                }
                if (line.IndexOf("From") == 0)
                {
                    String expectedfrom = "From: =?iso-2022-jp?Q?=93=FA=96{=8C=EA?= <" + japanesefromaddress.Email + ">";

                    if (line.IndexOf(expectedfrom) == 0)
                    {
                        fromHeaderEncoded = true;
                    }
                }
                if (line.IndexOf("Subject: =?iso-2022-jp?Q?=1B$BF|K\\8l=1B(B=20-=20Quoted=20Printable?=") == 0)
                {
                    subjectHeaderEncoded = true;
                }
                if (line.IndexOf("<html><body>=1B$BEl5~!\"F|K\\8l=1B(B</body></html>") == 0)
                {
                    //<html><body>=67=71=4E=AC=30=01=65=E5=67=2C=8A=9E</body></html>

                    htmlEncoded = true;
                }
                if (line.IndexOf("=1B$BEl5~!\"F|K\\8l=1B(B") == 0)
                {
                    textEncoded = true;
                }
                if (line.IndexOf("Content-Type: text/plain") == 0)
                {
                    hasPlainText = true;
                }
                if (line.IndexOf("Content-Type: text/html") == 0)
                {
                    hasHtmlText = true;
                }
                if (line.IndexOf("X-Mailer: DotNetOpenMail " + VersionInfo.GetInstance().ToString()) == 0)
                {
                    //hasDefaultXMailerHeader=true;
                }
                if (line.IndexOf("X-MyHeader1: my header number one") == 0)
                {
                    //hasCustomHeader1=true;
                }
                if (line.IndexOf("X-MyHeader2: my header number two") == 0)
                {
                    //hasCustomHeader2=true;
                }

                // log.Debug("Line +ACIAKw-i+-": +ACIAKw-line);
            }
            Assert.IsTrue(toHeaderEncoded, "To Header not encoded");
            Assert.IsTrue(fromHeaderEncoded, "From Header not encoded");
            Assert.IsTrue(subjectHeaderEncoded, "Subject Header not encoded");
            //Assert.IsTrue(hasSubjectHeader, "Missing Subject Header");
            //Assert.IsTrue(hasMimeVersion, "Missing Mime Version header");
            //Assert.IsTrue(hasMultipartAlternative, "Missing Mime Multipart/Alternative setting");
            Assert.IsTrue(hasPlainText, "Missing Plain Text");
            Assert.IsTrue(hasHtmlText, "Missing HTML");
            Assert.IsTrue(htmlEncoded, "HTML Not encoded");
            Assert.IsTrue(textEncoded, "Text Not encoded");
            //Assert.IsTrue(hasDefaultXMailerHeader, "Missing X-Mailer Header");
            //Assert.IsTrue(hasCustomHeader1, "Missing Custom Header 1");
            //Assert.IsTrue(hasCustomHeader2, "Missing Custom Header 2");
            //Assert.AreEqual(2, quotedPrintableParts, "Expected 2 quoted printable declarations, found +ACIAKw-quotedPrintableParts);
        }
        public void TestJapaneseHtmlAndTextB64Encoding()
        {
            //SmtpServer smtpserver=TestAddressHelper.GetSmtpServer();
            System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("Shift_JIS");

            EmailAddress japanesefromaddress = new EmailAddress(TestAddressHelper.GetFromAddress().Email, "日本語", EncodingType.Base64, encoding);
            EmailAddress japanesetoaddress   = new EmailAddress(TestAddressHelper.GetToAddress().Email, "日本語", EncodingType.Base64, encoding);
            EmailMessage emailmessage        = new EmailMessage();

            emailmessage.HeaderEncoding = DotNetOpenMail.Encoding.EncodingType.Base64;
            emailmessage.HeaderCharSet  = System.Text.Encoding.GetEncoding("Shift_JIS");

            emailmessage.FromAddress = japanesefromaddress;
            emailmessage.AddToAddress(japanesetoaddress);
            emailmessage.Subject  = "日本語 - Base 64";
            emailmessage.TextPart = new TextAttachment("東京、日本語");

            emailmessage.TextPart.CharSet  = System.Text.Encoding.GetEncoding("Shift_JIS");
            emailmessage.TextPart.Encoding = DotNetOpenMail.Encoding.EncodingType.Base64;
            emailmessage.HtmlPart          = new HtmlAttachment("<html><body>東京、日本語</body></html>");

            emailmessage.HtmlPart.CharSet  = System.Text.Encoding.GetEncoding("Shift_JIS");
            emailmessage.HtmlPart.Encoding = DotNetOpenMail.Encoding.EncodingType.Base64;

            emailmessage.Send(_smtpserver);

            String       content = emailmessage.ToDataString();
            StringReader sr      = new StringReader(content);

            log.Debug(content);

            int    i    = 0;
            String line = null;


            bool toHeaderEncoded      = false;
            bool fromHeaderEncoded    = false;
            bool subjectHeaderEncoded = false;
            //bool htmlEncoded=false;
            //bool textEncoded=false;
            bool hasPlainText = false;
            bool hasHtmlText  = false;



            while ((line = sr.ReadLine()) != null)
            {
                i++;
                //log.Debug("FOUND +ACIAKw-line);
                if (line.IndexOf("To: =?iso-2022-jp?B?k/qWe4zq?= <" + japanesetoaddress.Email + ">") == 0)
                {
                    toHeaderEncoded = true;
                }
                if (line.IndexOf("From") == 0)
                {
                    String expectedfrom = "From: =?iso-2022-jp?B?k/qWe4zq?= <" + japanesefromaddress.Email + ">";
                    if (line.IndexOf(expectedfrom) == 0)
                    {
                        fromHeaderEncoded = true;
                    }
                }
                if (line.IndexOf("Subject: =?iso-2022-jp?B?k/qWe4zqIC0gQmFzZSA2NA==?=") == 0)
                {
                    subjectHeaderEncoded = true;
                }
                if (line.IndexOf("Content-Type: multipart/alternative") == 0)
                {
                    //htmlEncoded=true;
                }
                if (line.IndexOf("Content-Type: text/html") == 0)
                {
                    hasHtmlText = true;
                }
                if (line.IndexOf("Content-Type: text/plain") == 0)
                {
                    hasPlainText = true;
                }
                if (line.IndexOf("X-Mailer: DotNetOpenMail " + VersionInfo.GetInstance().ToString()) == 0)
                {
                    //hasDefaultXMailerHeader=true;
                }
                if (line.IndexOf("X-MyHeader1: my header number one") == 0)
                {
                    //hasCustomHeader1=true;
                }
                if (line.IndexOf("X-MyHeader2: my header number two") == 0)
                {
                    //hasCustomHeader2=true;
                }

                // log.Debug("Line +ACIAKw-i+-": +ACIAKw-line);
            }
            Assert.IsTrue(toHeaderEncoded, "To Header not encoded");
            Assert.IsTrue(fromHeaderEncoded, "From Header not encoded");
            Assert.IsTrue(subjectHeaderEncoded, "Subject Header not encoded");
            //Assert.IsTrue(hasSubjectHeader, "Missing Subject Header");
            //Assert.IsTrue(hasMimeVersion, "Missing Mime Version header");
            //Assert.IsTrue(hasMultipartAlternative, "Missing Mime Multipart/Alternative setting");
            Assert.IsTrue(hasPlainText, "Missing Plain Text");
            Assert.IsTrue(hasHtmlText, "Missing HTML");
            //Assert.IsTrue(htmlEncoded, "HTML Not encoded");
            //Assert.IsTrue(textEncoded, "Text Not encoded");
            //Assert.IsTrue(hasDefaultXMailerHeader, "Missing X-Mailer Header");
            //Assert.IsTrue(hasCustomHeader1, "Missing Custom Header 1");
            //Assert.IsTrue(hasCustomHeader2, "Missing Custom Header 2");
            //Assert.AreEqual(2, quotedPrintableParts, "Expected 2 quoted printable declarations, found +ACIAKw-quotedPrintableParts);
        }