public void TestEncodingMailboxWithArabicName()
        {
            var mailbox = new MailboxAddress ("هل تتكلم اللغة الإنجليزية /العربية؟", "*****@*****.**");
            var list = new InternetAddressList ();
            list.Add (mailbox);

            var expected = "=?utf-8?b?2YfZhCDYqtiq2YPZhNmFINin2YTZhNi62Kk=?=\n =?utf-8?b?INin2YTYpdmG2KzZhNmK2LLZitipIC/Yp9mE2LnYsdio2YrYqdif?=\n\t<*****@*****.**>";
            var actual = list.ToString (UnixFormatOptions, true);

            Assert.AreEqual (expected, actual, "Encoding arabic mailbox did not match expected result: {0}", expected);
            Assert.IsTrue (InternetAddressList.TryParse (actual, out list), "Failed to parse arabic mailbox");
            Assert.AreEqual (mailbox.Name, list[0].Name);
        }
        public void TestEncodingLongNameMixedQuotingAndEncoding()
        {
            const string name = "Dr. xxxxxxxxxx xxxxx | xxxxxx.xxxxxxx für xxxxxxxxxxxxx xxxx";
            const string encodedNameLatin1  = "\"Dr. xxxxxxxxxx xxxxx | xxxxxx.xxxxxxx\" =?iso-8859-1?b?Zvxy?= xxxxxxxxxxxxx xxxx";
            const string encodedNameUnicode = "\"Dr. xxxxxxxxxx xxxxx | xxxxxx.xxxxxxx\" =?utf-8?b?ZsO8cg==?= xxxxxxxxxxxxx xxxx";
            const string encodedMailbox     = "\"Dr. xxxxxxxxxx xxxxx | xxxxxx.xxxxxxx\" =?iso-8859-1?b?Zvxy?= xxxxxxxxxxxxx\n xxxx <*****@*****.**>";
            const string address            = "*****@*****.**";
            var          options            = FormatOptions.Default.Clone();

            options.NewLineFormat            = NewLineFormat.Unix;
            options.AllowMixedHeaderCharsets = true;

            var buffer = Rfc2047.EncodePhrase(options, Encoding.UTF8, name);
            var result = Encoding.UTF8.GetString(buffer);

            Assert.AreEqual(encodedNameLatin1, result);

            var mailbox = new MailboxAddress(name, address);
            var list    = new InternetAddressList();

            list.Add(mailbox);

            result = list.ToString(options, true);

            Assert.AreEqual(encodedMailbox, result);

            // Now disable smart encoding

            options.AllowMixedHeaderCharsets = false;

            buffer = Rfc2047.EncodePhrase(options, Encoding.UTF8, name);
            result = Encoding.UTF8.GetString(buffer);

            Assert.AreEqual(encodedNameUnicode, result);
        }
Esempio n. 3
0
        public void TestEncodingSimpleMailboxWithQuotedName()
        {
            const string expected = "\"Stedfast, Jeffrey\" <*****@*****.**>";
            var          mailbox  = new MailboxAddress("Stedfast, Jeffrey", "*****@*****.**");
            var          list     = new InternetAddressList();

            list.Add(mailbox);

            var actual = list.ToString(UnixFormatOptions, true);

            Assert.AreEqual(expected, actual, "Encoding quoted mailbox did not match expected result: {0}", expected);
        }
Esempio n. 4
0
        public void TestEncodingSimpleAddressList()
        {
            const string expectedEncoded = "Kristoffer =?iso-8859-1?q?Br=E5nemyr?= <*****@*****.**>, Jeffrey Stedfast\n\t<*****@*****.**>";
            const string expectedDisplay = "\"Kristoffer Brånemyr\" <*****@*****.**>, \"Jeffrey Stedfast\" <*****@*****.**>";
            var          latin1          = Encoding.GetEncoding("iso-8859-1");
            var          options         = FormatOptions.Default.Clone();
            var          list            = new InternetAddressList();

            list.Add(new MailboxAddress(latin1, "Kristoffer Brånemyr", "*****@*****.**"));
            list.Add(new MailboxAddress("Jeffrey Stedfast", "*****@*****.**"));

            options.NewLineFormat = NewLineFormat.Unix;

            var display = list.ToString(options, false);

            Assert.AreEqual(expectedDisplay, display, "Display value does not match the expected result: {0}", display);

            var encoded = list.ToString(options, true);

            Assert.AreEqual(expectedEncoded, encoded, "Encoded value does not match the expected result: {0}", display);
        }
        public void TestDecodedMailboxHasCorrectCharsetEncoding()
        {
            var latin1 = Encoding.GetEncoding ("iso-8859-1");
            var mailbox = new MailboxAddress (latin1, "Kristoffer Brånemyr", "*****@*****.**");
            var list = new InternetAddressList ();
            list.Add (mailbox);

            var encoded = list.ToString (UnixFormatOptions, true);

            InternetAddressList parsed;
            Assert.IsTrue (InternetAddressList.TryParse (encoded, out parsed), "Failed to parse address");
            Assert.AreEqual (latin1.HeaderName, parsed[0].Encoding.HeaderName, "Parsed charset does not match");
        }
Esempio n. 6
0
        public void TestEncodingMailboxWithArabicName()
        {
            const string expected = "=?utf-8?b?2YfZhCDYqtiq2YPZhNmFINin2YTZhNi62Kkg2KfZhNil2YbYrNmE2YrYstmK2Kk=?=\n =?utf-8?b?IC/Yp9mE2LnYsdio2YrYqdif?= <*****@*****.**>";
            var          mailbox  = new MailboxAddress("هل تتكلم اللغة الإنجليزية /العربية؟", "*****@*****.**");
            var          list     = new InternetAddressList();

            list.Add(mailbox);

            var actual = list.ToString(UnixFormatOptions, true);

            Assert.AreEqual(expected, actual, "Encoding arabic mailbox did not match expected result: {0}", expected);
            Assert.IsTrue(InternetAddressList.TryParse(actual, out list), "Failed to parse arabic mailbox");
            Assert.AreEqual(mailbox.Name, list[0].Name);
        }
Esempio n. 7
0
        public void TestEncodingMailboxWithJapaneseName()
        {
            const string expected = "=?utf-8?b?54uC44Gj44Gf44GT44Gu5LiW44Gn54uC44GG44Gq44KJ5rCX44Gv56K644GL44Gg?=\n =?utf-8?b?44CC?= <*****@*****.**>";
            var          mailbox  = new MailboxAddress("狂ったこの世で狂うなら気は確かだ。", "*****@*****.**");
            var          list     = new InternetAddressList();

            list.Add(mailbox);

            var actual = list.ToString(UnixFormatOptions, true);

            Assert.AreEqual(expected, actual, "Encoding japanese mailbox did not match expected result: {0}", expected);
            Assert.IsTrue(InternetAddressList.TryParse(actual, out list), "Failed to parse japanese mailbox");
            Assert.AreEqual(mailbox.Name, list[0].Name);
        }
		static void AssertInternetAddressListsEqual (string text, InternetAddressList expected, InternetAddressList result)
		{
			Assert.AreEqual (expected.Count, result.Count, "Unexpected number of addresses: {0}", text);

			for (int i = 0; i < expected.Count; i++) {
				Assert.AreEqual (expected.GetType (), result.GetType (),  "Address #{0} differs in type: {1}", i, text);

				Assert.AreEqual (expected[i].ToString (), result[i].ToString (), "Display strings differ for {0}", text);
			}

			var encoded = result.ToString (true).Replace ("\r\n", "\n");

			Assert.AreEqual (text, encoded, "Encoded strings differ for {0}", text);
		}
Esempio n. 9
0
        static void AssertInternetAddressListsEqual(string text, InternetAddressList expected, InternetAddressList result)
        {
            Assert.AreEqual(expected.Count, result.Count, "Unexpected number of addresses: {0}", text);

            for (int i = 0; i < expected.Count; i++)
            {
                Assert.AreEqual(expected.GetType(), result.GetType(), "Address #{0} differs in type: {1}", i, text);

                Assert.AreEqual(expected[i].ToString(), result[i].ToString(), "Display strings differ for {0}", text);
            }

            var encoded = result.ToString(true).Replace("\r\n", "\n");

            Assert.AreEqual(text, encoded, "Encoded strings differ for {0}", text);
        }
Esempio n. 10
0
        public void TestEncodingMailboxWithReallyLongWord()
        {
            const string expected = "=?us-ascii?q?reeeeeeeeeeeeeeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaallllllllllll?=\n =?us-ascii?q?llllllllllllllllllllllllllllllllllllllllllly?= long word\n\t<*****@*****.**>";
            const string name     = "reeeeeeeeeeeeeeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaallllllllllllllllllllllllllllllllllllllllllllllllllllllly long word";
            var          mailbox  = new MailboxAddress(name, "*****@*****.**");
            var          list     = new InternetAddressList();

            list.Add(mailbox);

            var actual = list.ToString(UnixFormatOptions, true);

            Assert.AreEqual(expected, actual, "Encoding really long mailbox did not match expected result: {0}", expected);
            Assert.IsTrue(InternetAddressList.TryParse(actual, out list), "Failed to parse really long mailbox");
            Assert.AreEqual(mailbox.Name, list[0].Name);
        }
Esempio n. 11
0
        public void TestDecodedMailboxHasCorrectCharsetEncoding()
        {
            var latin1  = Encoding.GetEncoding("iso-8859-1");
            var mailbox = new MailboxAddress(latin1, "Kristoffer Brånemyr", "*****@*****.**");
            var list    = new InternetAddressList();

            list.Add(mailbox);

            var encoded = list.ToString(UnixFormatOptions, true);

            InternetAddressList parsed;

            Assert.IsTrue(InternetAddressList.TryParse(encoded, out parsed), "Failed to parse address");
            Assert.AreEqual(latin1.HeaderName, parsed[0].Encoding.HeaderName, "Parsed charset does not match");
        }
Esempio n. 12
0
        public void TestUnsupportedCharsetExceptionNotThrown()
        {
            var mailbox = new MailboxAddress(Encoding.UTF8, "狂ったこの世で狂うなら気は確かだ。", "*****@*****.**");
            var list    = new InternetAddressList();

            list.Add(mailbox);

            var encoded = list.ToString(true);

            encoded = encoded.Replace("utf-8", "x-unknown");

            InternetAddressList parsed;

            try {
                Assert.IsTrue(InternetAddressList.TryParse(encoded, out parsed), "Failed to parse address");
            } catch (Exception ex) {
                Assert.Fail("Exception thrown parsing address with unsupported charset: {0}", ex);
            }
        }
Esempio n. 13
0
        public void TestEncodingLongNameMixedQuotingAndEncoding()
        {
            const string name           = "Dr. xxxxxxxxxx xxxxx | xxxxxx.xxxxxxx für xxxxxxxxxxxxx xxxx";
            const string encodedName    = "\"Dr. xxxxxxxxxx xxxxx | xxxxxx.xxxxxxx\" =?iso-8859-1?b?Zvxy?= xxxxxxxxxxxxx xxxx";
            const string encodedMailbox = "\"Dr. xxxxxxxxxx xxxxx | xxxxxx.xxxxxxx\" =?iso-8859-1?b?Zvxy?= xxxxxxxxxxxxx\n xxxx <*****@*****.**>";
            const string address        = "*****@*****.**";
            var          buffer         = Rfc2047.EncodePhrase(Encoding.UTF8, name);
            var          result         = Encoding.UTF8.GetString(buffer);

            Assert.AreEqual(encodedName, result);

            var mailbox = new MailboxAddress(name, address);
            var list    = new InternetAddressList();

            list.Add(mailbox);

            result = list.ToString(true);

            Assert.AreEqual(encodedMailbox, result);
        }
Esempio n. 14
0
        public void TestEncodingSimpleMailboxWithLatin1Name()
        {
            var latin1  = Encoding.GetEncoding("iso-8859-1");
            var mailbox = new MailboxAddress(latin1, "Kristoffer Brånemyr", "*****@*****.**");
            var list    = new InternetAddressList();

            list.Add(mailbox);

            var expected = "Kristoffer =?iso-8859-1?q?Br=E5nemyr?= <*****@*****.**>";
            var actual   = list.ToString(UnixFormatOptions, true);

            Assert.AreEqual(expected, actual, "Encoding latin1 mailbox did not match expected result: {0}", expected);

            mailbox = new MailboxAddress(latin1, "Tõivo Leedjärv", "*****@*****.**");
            list    = new InternetAddressList();
            list.Add(mailbox);

            expected = "=?iso-8859-1?b?VIH1aXZvIExlZWRqgeRydg==?= <*****@*****.**>";
            actual   = list.ToString(UnixFormatOptions, true);

            Assert.AreEqual(expected, actual, "Encoding latin1 mailbox did not match expected result: {0}", expected);
        }
		public void TestEncodingSimpleMailboxWithQuotedName ()
		{
			const string expected = "\"Stedfast, Jeffrey\" <*****@*****.**>";
			var mailbox = new MailboxAddress ("Stedfast, Jeffrey", "*****@*****.**");
			var list = new InternetAddressList ();
			list.Add (mailbox);

			var actual = list.ToString (UnixFormatOptions, true);

			Assert.AreEqual (expected, actual, "Encoding quoted mailbox did not match expected result: {0}", expected);
		}
		public void TestEncodingSimpleMailboxWithLatin1Name ()
		{
			var latin1 = Encoding.GetEncoding ("iso-8859-1");
			var mailbox = new MailboxAddress (latin1, "Kristoffer Brånemyr", "*****@*****.**");
			var list = new InternetAddressList ();
			list.Add (mailbox);

			var expected = "Kristoffer =?iso-8859-1?q?Br=E5nemyr?= <*****@*****.**>";
			var actual = list.ToString (UnixFormatOptions, true);

			Assert.AreEqual (expected, actual, "Encoding latin1 mailbox did not match expected result: {0}", expected);

			mailbox = new MailboxAddress (latin1, "Tõivo Leedjärv", "*****@*****.**");
			list = new InternetAddressList ();
			list.Add (mailbox);

			expected = "=?iso-8859-1?b?VIH1aXZvIExlZWRqgeRydg==?= <*****@*****.**>";
			actual = list.ToString (UnixFormatOptions, true);

			Assert.AreEqual (expected, actual, "Encoding latin1 mailbox did not match expected result: {0}", expected);
		}
		public void TestEncodingMailboxWithReallyLongWord ()
		{
			const string expected = "=?us-ascii?q?reeeeeeeeeeeeeeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaallllllllllll?=\n =?us-ascii?q?llllllllllllllllllllllllllllllllllllllllllly?= long word\n\t<*****@*****.**>";
			const string name = "reeeeeeeeeeeeeeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaallllllllllllllllllllllllllllllllllllllllllllllllllllllly long word";
			var mailbox = new MailboxAddress (name, "*****@*****.**");
			var list = new InternetAddressList ();
			list.Add (mailbox);

			var actual = list.ToString (UnixFormatOptions, true);

			Assert.AreEqual (expected, actual, "Encoding really long mailbox did not match expected result: {0}", expected);
			Assert.IsTrue (InternetAddressList.TryParse (actual, out list), "Failed to parse really long mailbox");
			Assert.AreEqual (mailbox.Name, list[0].Name);
		}
		public void TestEncodingMailboxWithJapaneseName ()
		{
			const string expected = "=?utf-8?b?54uC44Gj44Gf44GT44Gu5LiW44Gn54uC44GG44Gq44KJ5rCX44Gv56K644GL44Gg?=\n =?utf-8?b?44CC?= <*****@*****.**>";
			var mailbox = new MailboxAddress ("狂ったこの世で狂うなら気は確かだ。", "*****@*****.**");
			var list = new InternetAddressList ();
			list.Add (mailbox);

			var actual = list.ToString (UnixFormatOptions, true);

			Assert.AreEqual (expected, actual, "Encoding japanese mailbox did not match expected result: {0}", expected);
			Assert.IsTrue (InternetAddressList.TryParse (actual, out list), "Failed to parse japanese mailbox");
			Assert.AreEqual (mailbox.Name, list[0].Name);
		}
		public void TestEncodingSimpleAddressList ()
		{
			const string expectedEncoded = "Kristoffer =?iso-8859-1?q?Br=E5nemyr?= <*****@*****.**>, Jeffrey Stedfast\n\t<*****@*****.**>";
			const string expectedDisplay = "\"Kristoffer Brånemyr\" <*****@*****.**>, \"Jeffrey Stedfast\" <*****@*****.**>";
			var latin1 = Encoding.GetEncoding ("iso-8859-1");
			var options = FormatOptions.Default.Clone ();
			var list = new InternetAddressList ();

			list.Add (new MailboxAddress (latin1, "Kristoffer Brånemyr", "*****@*****.**"));
			list.Add (new MailboxAddress ("Jeffrey Stedfast", "*****@*****.**"));

			options.NewLineFormat = NewLineFormat.Unix;

			var display = list.ToString (options, false);
			Assert.AreEqual (expectedDisplay, display, "Display value does not match the expected result: {0}", display);

			var encoded = list.ToString (options, true);
			Assert.AreEqual (expectedEncoded, encoded, "Encoded value does not match the expected result: {0}", display);
		}
		public void TestUnsupportedCharsetExceptionNotThrown ()
		{
			var mailbox = new MailboxAddress (Encoding.UTF8, "狂ったこの世で狂うなら気は確かだ。", "*****@*****.**");
			var list = new InternetAddressList ();
			list.Add (mailbox);

			var encoded = list.ToString (true);

			encoded = encoded.Replace ("utf-8", "x-unknown");

			InternetAddressList parsed;

			try {
				Assert.IsTrue (InternetAddressList.TryParse (encoded, out parsed), "Failed to parse address");
			} catch (Exception ex) {
				Assert.Fail ("Exception thrown parsing address with unsupported charset: {0}", ex);
			}
		}