コード例 #1
1
        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);
        }
コード例 #2
0
		public void TestSimpleAddrSpec ()
		{
			var expected = new InternetAddressList ();
			var mailbox = new MailboxAddress ("", "");
			InternetAddressList result;
			string text;

			expected.Add (mailbox);

			text = "*****@*****.**";
			mailbox.Address = "*****@*****.**";
			Assert.IsTrue (InternetAddressList.TryParse (text, out result), "Failed to parse: {0}", text);
			AssertInternetAddressListsEqual (text, expected, result);

			result = InternetAddressList.Parse (text);
			AssertInternetAddressListsEqual (text, expected, result);

			text = "fejj";
			mailbox.Address = "fejj";
			Assert.IsTrue (InternetAddressList.TryParse (text, out result), "Failed to parse: {0}", text);
			AssertInternetAddressListsEqual (text, expected, result);

			result = InternetAddressList.Parse (text);
			AssertInternetAddressListsEqual (text, expected, result);
		}
コード例 #3
0
        public void TestSimpleAddrSpecWithTrailingDot()
        {
            const string encoded  = "*****@*****.**";
            const string text     = "[email protected].";
            var          expected = new InternetAddressList();
            var          mailbox  = new MailboxAddress("", "*****@*****.**");

            expected.Add(mailbox);

            mailbox.Address = "*****@*****.**";
            AssertParseAndTryParse(text, encoded, expected);
        }
コード例 #4
0
        public void TestExampleMailboxWithCommentsFromRfc5322()
        {
            InternetAddressList expected = new InternetAddressList();
            InternetAddressList result;
            string text;

            text = "Pete(A nice \\) chap) <pete(his account)@silly.test(his host)>";
            expected.Add(new MailboxAddress("Pete", "*****@*****.**"));

            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(text, expected, result);
        }
コード例 #5
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);
        }
コード例 #6
0
        public void TestEncodingSimpleMailboxWithQuotedName()
        {
            var mailbox = new MailboxAddress("Stedfast, Jeffrey", "*****@*****.**");
            var list    = new InternetAddressList();

            list.Add(mailbox);

            var expected = "\"Stedfast, Jeffrey\" <*****@*****.**>";
            var actual   = list.ToString(UnixFormatOptions, true);

            Assert.AreEqual(expected, actual, "Encoding quoted mailbox did not match expected result: {0}", expected);
        }
コード例 #7
0
        public void TestObsoleteMailboxRoutingSyntaxWithEmptyDomains()
        {
            InternetAddressList expected = new InternetAddressList();
            InternetAddressList result;
            string text;

            text = "Routed Address <@route1,,@route2,,,@route3:[email protected]>";

            expected.Add(new MailboxAddress("Routed Address", new string[] { "route1", "route2", "route3" }, "*****@*****.**"));

            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(text, expected, result);
        }
コード例 #8
0
        public void TestMailboxWith8bitName()
        {
            InternetAddressList expected = new InternetAddressList();
            InternetAddressList result;
            string text;

            text = "Patrik F¥dltstr¥vm <*****@*****.**>";

            expected.Add(new MailboxAddress("Patrik F¥dltstr¥vm", "*****@*****.**"));

            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(text, expected, result);
        }
コード例 #9
0
        public void TestMailboxWithDotsInTheName()
        {
            InternetAddressList expected = new InternetAddressList();
            InternetAddressList result;
            string text;

            text = "Nathaniel S. Borenstein <*****@*****.**>";

            expected.Add(new MailboxAddress("Nathaniel S. Borenstein", "*****@*****.**"));

            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(text, expected, result);
        }
コード例 #10
0
		public void TestArgumentExceptions ()
		{
			var mailbox = new MailboxAddress ("MimeKit Unit Tests", "*****@*****.**");
			var list = new InternetAddressList ();

			list.Add (new MailboxAddress ("Example User", "*****@*****.**"));

			Assert.Throws<ArgumentNullException> (() => new InternetAddressList (null));
			Assert.Throws<ArgumentNullException> (() => list.Add (null));
			Assert.Throws<ArgumentNullException> (() => list.AddRange (null));
			Assert.Throws<ArgumentNullException> (() => list.CompareTo (null));
			Assert.Throws<ArgumentNullException> (() => list.Contains (null));
			Assert.Throws<ArgumentNullException> (() => list.CopyTo (null, 0));
			Assert.Throws<ArgumentOutOfRangeException> (() => list.CopyTo (new InternetAddress[0], -1));
			Assert.Throws<ArgumentNullException> (() => list.IndexOf (null));
			Assert.Throws<ArgumentOutOfRangeException> (() => list.Insert (-1, mailbox));
			Assert.Throws<ArgumentNullException> (() => list.Insert (0, null));
			Assert.Throws<ArgumentNullException> (() => list.Remove (null));
			Assert.Throws<ArgumentOutOfRangeException> (() => list.RemoveAt (-1));
			Assert.Throws<ArgumentOutOfRangeException> (() => list[-1] = mailbox);
			Assert.Throws<ArgumentNullException> (() => list[0] = null);
		}
コード例 #11
0
        public void TestArgumentExceptions()
        {
            var mailbox = new MailboxAddress("MimeKit Unit Tests", "*****@*****.**");
            var list    = new InternetAddressList();

            list.Add(new MailboxAddress("Example User", "*****@*****.**"));

            Assert.Throws <ArgumentNullException> (() => new InternetAddressList(null));
            Assert.Throws <ArgumentNullException> (() => list.Add(null));
            Assert.Throws <ArgumentNullException> (() => list.AddRange(null));
            Assert.Throws <ArgumentNullException> (() => list.CompareTo(null));
            Assert.Throws <ArgumentNullException> (() => list.Contains(null));
            Assert.Throws <ArgumentNullException> (() => list.CopyTo(null, 0));
            Assert.Throws <ArgumentOutOfRangeException> (() => list.CopyTo(new InternetAddress[0], -1));
            Assert.Throws <ArgumentNullException> (() => list.IndexOf(null));
            Assert.Throws <ArgumentOutOfRangeException> (() => list.Insert(-1, mailbox));
            Assert.Throws <ArgumentNullException> (() => list.Insert(0, null));
            Assert.Throws <ArgumentNullException> (() => list.Remove(null));
            Assert.Throws <ArgumentOutOfRangeException> (() => list.RemoveAt(-1));
            Assert.Throws <ArgumentOutOfRangeException> (() => list[-1] = mailbox);
            Assert.Throws <ArgumentNullException> (() => list[0]        = null);
        }
コード例 #12
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");
        }
コード例 #13
0
ファイル: Email.cs プロジェクト: JaCraig/SimpleMail
        /// <summary>
        /// Splits the recipients.
        /// </summary>
        /// <param name="list">The list.</param>
        /// <param name="mailboxes">The mailboxes.</param>
        private static void SplitRecipients(InternetAddressList list, string mailboxes)
        {
            if (string.IsNullOrEmpty(mailboxes) || list is null)
            {
                return;
            }
            var SplitMailboxes = mailboxes?.Split(new string[] { ",", ";" }, StringSplitOptions.RemoveEmptyEntries) ?? Array.Empty <string>();

            for (int i = 0; i < SplitMailboxes.Length; i++)
            {
                list.Add(new MailboxAddress("", SplitMailboxes[i]));
            }
        }
コード例 #14
0
ファイル: ImapUtils.cs プロジェクト: radiy/MailKit
        static void AddEnvelopeAddress(InternetAddressList list, ImapEngine engine, CancellationToken cancellationToken)
        {
            var       values = new string[4];
            ImapToken token;
            int       index = 0;

            do
            {
                token = engine.ReadToken(cancellationToken);

                switch (token.Type)
                {
                case ImapTokenType.Literal:
                    values[index] = engine.ReadLiteral(cancellationToken);
                    break;

                case ImapTokenType.QString:
                case ImapTokenType.Atom:
                    values[index] = (string)token.Value;
                    break;

                case ImapTokenType.Nil:
                    break;

                default:
                    throw ImapEngine.UnexpectedToken(token, false);
                }

                index++;
            } while (index < 4);

            token = engine.ReadToken(cancellationToken);

            if (token.Type != ImapTokenType.CloseParen)
            {
                throw ImapEngine.UnexpectedToken(token, false);
            }

            string name = null;

            if (values[0] != null)
            {
                // Note: since the ImapEngine.ReadLiteral() uses iso-8859-1
                // to convert bytes to unicode, we can undo that here:
                name = Rfc2047.DecodePhrase(Latin1.GetBytes(values[0]));
            }

            string address = values[3] != null ? values[2] + "@" + values[3] : values[2];

            list.Add(new MailboxAddress(name, address));
        }
コード例 #15
0
        public void TestSimpleMailboxes()
        {
            InternetAddressList expected = new InternetAddressList();
            MailboxAddress      mailbox  = new MailboxAddress("", "");
            InternetAddressList result;
            string text;

            expected.Add(mailbox);

            mailbox.Name    = "Jeffrey Stedfast";
            mailbox.Address = "*****@*****.**";
            text            = "Jeffrey Stedfast <*****@*****.**>";
            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(text, expected, result);

            mailbox.Name    = "this is a folded name";
            mailbox.Address = "*****@*****.**";
            text            = "this is\n\ta folded name <*****@*****.**>";
            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(text, expected, result);

            mailbox.Name    = "Jeffrey fejj Stedfast";
            mailbox.Address = "*****@*****.**";
            text            = "Jeffrey \"fejj\" Stedfast <*****@*****.**>";
            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(text, expected, result);

            mailbox.Name    = "Jeffrey \"fejj\" Stedfast";
            mailbox.Address = "*****@*****.**";
            text            = "\"Jeffrey \\\"fejj\\\" Stedfast\" <*****@*****.**>";
            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(text, expected, result);

            mailbox.Name    = "Stedfast, Jeffrey";
            mailbox.Address = "*****@*****.**";
            text            = "\"Stedfast, Jeffrey\" <*****@*****.**>";
            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(text, expected, result);

//			mailbox.Name = "Jeffrey Stedfast";
//			mailbox.Address = "*****@*****.**";
//			text = "[email protected] (Jeffrey Stedfast)";
//			Assert.IsTrue (InternetAddressList.TryParse (text, out result), "Failed to parse: {0}", text);
//			AssertInternetAddressListsEqual (text, expected, result);

            mailbox.Name    = "Jeffrey Stedfast";
            mailbox.Address = "*****@*****.**";
            text            = "Jeffrey Stedfast <fejj(recursive (comment) block)@helixcode.(and a comment here)com>";
            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(text, expected, result);
        }
コード例 #16
0
        public void TestCompareTo()
        {
            var list1 = new InternetAddressList();

            list1.Add(new GroupAddress("Local recipients", new InternetAddress[] {
                new MailboxAddress("", "phil"),
                new MailboxAddress("", "joe"),
                new MailboxAddress("", "alex"),
                new MailboxAddress("", "bob"),
            }));
            list1.Add(new MailboxAddress("Joey", "*****@*****.**"));
            list1.Add(new MailboxAddress("Chandler", "*****@*****.**"));

            var list2 = new InternetAddressList();

            list2.Add(new MailboxAddress("Chandler", "*****@*****.**"));
            list2.Add(new GroupAddress("Local recipients", new InternetAddress[] {
                new MailboxAddress("", "phil"),
                new MailboxAddress("", "joe"),
                new MailboxAddress("", "alex"),
                new MailboxAddress("", "bob"),
            }));
            list2.Add(new MailboxAddress("Joey", "*****@*****.**"));

            Assert.IsTrue(list1.CompareTo(list2) > 0, "CompareTo() should return < 0.");
            Assert.IsTrue(list2.CompareTo(list1) < 0, "CompareTo() should return > 0.");

            var mailbox = new MailboxAddress("Joe", "*****@*****.**");
            var group   = new GroupAddress("Joe", new InternetAddress[] {
                new MailboxAddress("Joe", "*****@*****.**")
            });

            // MailboxAddresses with the same name should always sort first
            Assert.IsTrue(mailbox.CompareTo(group) < 0, "CompareTo() should return < 0.");
            Assert.IsTrue(group.CompareTo(mailbox) > 0, "CompareTo() should return > 0.");

            Assert.IsTrue(mailbox.CompareTo(group.Members[0]) == 0, "CompareTo() should return 0.");
        }
コード例 #17
0
        /// <summary>
        /// 转换成Internet地址列表
        /// </summary>
        /// <param name="addresses">邮箱地址集合</param>
        private static InternetAddressList ToInternetAddressList(this MailAddressCollection addresses)
        {
            if (addresses == null)
            {
                return(null);
            }
            var list = new InternetAddressList();

            foreach (var address in addresses)
            {
                list.Add(address.ToMailboxAddress());
            }
            return(list);
        }
コード例 #18
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);
        }
コード例 #19
0
ファイル: TnefPart.cs プロジェクト: xiaowei-asp/MimeKit
        static void ExtractRecipientTable(TnefReader reader, MimeMessage message)
        {
            var prop = reader.TnefPropertyReader;

            // Note: The RecipientTable uses rows of properties...
            while (prop.ReadNextRow ()) {
                string transmitableDisplayName = null;
                string recipientDisplayName = null;
                string displayName = string.Empty;
                InternetAddressList list = null;
                string addr = null;

                while (prop.ReadNextProperty ()) {
                    switch (prop.PropertyTag.Id) {
                    case TnefPropertyId.RecipientType:
                        int recipientType = prop.ReadValueAsInt32 ();
                        switch (recipientType) {
                        case 1: list = message.To; break;
                        case 2: list = message.Cc; break;
                        case 3: list = message.Bcc; break;
                        }
                        break;
                    case TnefPropertyId.TransmitableDisplayName:
                        transmitableDisplayName = prop.ReadValueAsString ();
                        break;
                    case TnefPropertyId.RecipientDisplayName:
                        recipientDisplayName = prop.ReadValueAsString ();
                        break;
                    case TnefPropertyId.DisplayName:
                        displayName = prop.ReadValueAsString ();
                        break;
                    case TnefPropertyId.EmailAddress:
                        if (string.IsNullOrEmpty (addr))
                            addr = prop.ReadValueAsString ();
                        break;
                    case TnefPropertyId.SmtpAddress:
                        // The SmtpAddress, if it exists, should take precedence over the EmailAddress
                        // (since the SmtpAddress is meant to be used in the RCPT TO command).
                        addr = prop.ReadValueAsString ();
                        break;
                    }
                }

                if (list != null && !string.IsNullOrEmpty (addr)) {
                    var name = recipientDisplayName ?? transmitableDisplayName ?? displayName;

                    list.Add (new MailboxAddress (name, addr));
                }
            }
        }
コード例 #20
0
        public void TestExampleGroupWithCommentsFromRfc5322()
        {
            const string text     = "A Group(Some people):Chris Jones <c@(Chris's host.)public.example>, [email protected], John <*****@*****.**> (my dear friend); (the end of the group)";
            const string encoded  = "A Group: Chris Jones <*****@*****.**>, [email protected], John <*****@*****.**>;";
            var          expected = new InternetAddressList();

            expected.Add(new GroupAddress("A Group", new InternetAddress[] {
                new MailboxAddress("Chris Jones", "*****@*****.**"),
                new MailboxAddress("", "*****@*****.**"),
                new MailboxAddress("John", "*****@*****.**")
            }));

            AssertParseAndTryParse(text, encoded, expected);
        }
コード例 #21
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);
        }
コード例 #22
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);
        }
コード例 #23
0
        public void TestMailboxWith8bitName()
        {
            const string        encoded  = "Patrik =?iso-8859-1?b?RqVkbHRzdHKldm0=?= <*****@*****.**>";
            const string        text     = "Patrik F¥dltstr¥vm <*****@*****.**>";
            var                 expected = new InternetAddressList();
            InternetAddressList result;

            expected.Add(new MailboxAddress("Patrik F¥dltstr¥vm", "*****@*****.**"));

            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(encoded, expected, result);

            result = InternetAddressList.Parse(text);
            AssertInternetAddressListsEqual(encoded, expected, result);
        }
コード例 #24
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");
        }
コード例 #25
0
        public void TestSimpleMailboxes()
        {
            var    expected = new InternetAddressList();
            var    mailbox  = new MailboxAddress("", "*****@*****.**");
            string text;

            expected.Add(mailbox);

            mailbox.Name    = "Jeffrey Stedfast";
            mailbox.Address = "*****@*****.**";
            text            = "Jeffrey Stedfast <*****@*****.**>";
            AssertParseAndTryParse(text, text, expected);

            mailbox.Name    = "this is a folded name";
            mailbox.Address = "*****@*****.**";
            text            = "this is\n\ta folded name <*****@*****.**>";
            AssertParseAndTryParse(text, "this is a folded name <*****@*****.**>", expected);

            mailbox.Name    = "Jeffrey fejj Stedfast";
            mailbox.Address = "*****@*****.**";
            text            = "Jeffrey \"fejj\" Stedfast <*****@*****.**>";
            AssertParseAndTryParse(text, "Jeffrey fejj Stedfast <*****@*****.**>", expected);

            mailbox.Name    = "Jeffrey \"fejj\" Stedfast";
            mailbox.Address = "*****@*****.**";
            text            = "\"Jeffrey \\\"fejj\\\" Stedfast\" <*****@*****.**>";
            AssertParseAndTryParse(text, text, expected);

            mailbox.Name    = "Stedfast, Jeffrey";
            mailbox.Address = "*****@*****.**";
            text            = "\"Stedfast, Jeffrey\" <*****@*****.**>";
            AssertParseAndTryParse(text, text, expected);

            mailbox.Name    = "Jeffrey Stedfast";
            mailbox.Address = "*****@*****.**";
            text            = "[email protected] (Jeffrey Stedfast)";
            AssertParseAndTryParse(text, "Jeffrey Stedfast <*****@*****.**>", expected);

            mailbox.Name    = "Jeffrey Stedfast";
            mailbox.Address = "*****@*****.**";
            text            = "Jeffrey Stedfast <fejj(recursive (comment) block)@helixcode.(and a comment here)com>";
            AssertParseAndTryParse(text, "Jeffrey Stedfast <*****@*****.**>", expected);

            mailbox.Name    = "Jeffrey Stedfast";
            mailbox.Address = "*****@*****.**";
            text            = "Jeffrey Stedfast <[email protected].>";
            AssertParseAndTryParse(text, "Jeffrey Stedfast <*****@*****.**>", expected);
        }
コード例 #26
0
 private static void AddMailAddressCollection(InternetAddressList collection, IEnumerable <string> emails)
 {
     foreach (var email in emails)
     {
         var splitedEmails = email.Split(';');
         foreach (var m in splitedEmails)
         {
             Regex regex = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$");
             Match match = regex.Match(m);
             if (match.Success)
             {
                 collection.Add(new MailboxAddress(m, m));
             }
         }
     }
 }
コード例 #27
0
        public void TestObsoleteMailboxRoutingSyntax()
        {
            var expected = new InternetAddressList();
            InternetAddressList result;
            string text;

            text = "Routed Address <@route:[email protected]>";

            expected.Add(new MailboxAddress("Routed Address", new [] { "route" }, "*****@*****.**"));

            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(text, expected, result);

            result = InternetAddressList.Parse(text);
            AssertInternetAddressListsEqual(text, expected, result);
        }
コード例 #28
0
        public void TestSimpleAddrSpec()
        {
            var    expected = new InternetAddressList();
            var    mailbox  = new MailboxAddress("", "*****@*****.**");
            string text;

            expected.Add(mailbox);

            text            = "*****@*****.**";
            mailbox.Address = "*****@*****.**";
            AssertParseAndTryParse(text, text, expected);

            text            = "fejj";
            mailbox.Address = "fejj";
            AssertParseAndTryParse(text, text, expected);
        }
コード例 #29
0
        public void TestExampleGroupWithCommentsFromRfc5322()
        {
            InternetAddressList expected = new InternetAddressList();
            InternetAddressList result;
            string text;

            text = "A Group(Some people):Chris Jones <c@(Chris's host.)public.example>, [email protected], John <*****@*****.**> (my dear friend); (the end of the group)";

            expected.Add(new GroupAddress("A Group", new InternetAddress[] {
                new MailboxAddress("Chris Jones", "*****@*****.**"),
                new MailboxAddress("", "*****@*****.**"),
                new MailboxAddress("John", "*****@*****.**")
            }));

            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(text, expected, result);
        }
コード例 #30
0
        public void TestSimpleAddrSpecWithTrailingDot()
        {
            const string        encoded  = "*****@*****.**";
            const string        text     = "[email protected].";
            var                 expected = new InternetAddressList();
            var                 mailbox  = new MailboxAddress("", "");
            InternetAddressList result;

            expected.Add(mailbox);

            mailbox.Address = "*****@*****.**";
            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(encoded, expected, result);

            result = InternetAddressList.Parse(text);
            AssertInternetAddressListsEqual(encoded, expected, result);
        }
コード例 #31
0
        public void TestLocalGroupWithoutSemicolon()
        {
            const string text     = "Local recipients: phil, joe, alex, bob";
            const string encoded  = "Local recipients: phil, joe, alex, bob;";
            var          expected = new InternetAddressList();

            expected.Add(new GroupAddress("Local recipients", new InternetAddress[] {
                new MailboxAddress("", "phil"),
                new MailboxAddress("", "joe"),
                new MailboxAddress("", "alex"),
                new MailboxAddress("", "bob"),
            }));

            AssertTryParse(text, encoded, expected);

            //Assert.Throws<ParseException> (() => InternetAddressList.Parse (text), "Parsing should have failed.");
        }
コード例 #32
0
        public void SendMail(List <string> to, string subject, string body, IOptions <MailSettings> mailSettings, List <string> ccMailAddress = null)
        {
            FromName  = FromName ?? "Slack Admin";
            FromEmail = FromEmail ?? "*****@*****.**";
            try
            {
                SetupMailSettings(mailSettings);
                var message = new MimeMessage();
                message.From.Add(new MailboxAddress(FromName, FromEmail));

                InternetAddressList sentToList = new InternetAddressList();
                foreach (string email in to)
                {
                    sentToList.Add(new MailboxAddress(email));
                }
                InternetAddressList ccToList = new InternetAddressList();
                if (ccMailAddress != null)
                {
                    foreach (string cc in ccMailAddress)
                    {
                        ccToList.Add(new MailboxAddress(cc));
                    }
                }
                message.Cc.AddRange(ccToList);
                message.To.AddRange(sentToList);
                message.Subject = subject;
                message.Body    = new MimeKit.TextPart("html")
                {
                    Text = body
                };

                using (var client = new SmtpClient())
                {
                    client.ServerCertificateValidationCallback = (s, c, h, e) => true;
                    client.Connect(Host, Port, true);
                    client.Authenticate(AuthEmail, AuthPassword);
                    client.Send(message);
                    client.Disconnect(true);
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
コード例 #33
0
        public void TestMailboxesWithRfc2047EncodedNames()
        {
            var    expected = new InternetAddressList();
            var    mailbox  = new MailboxAddress("", "*****@*****.**");
            string text;

            expected.Add(mailbox);

            mailbox.Name    = "Kristoffer Brånemyr";
            mailbox.Address = "*****@*****.**";
            text            = "=?iso-8859-1?q?Kristoffer_Br=E5nemyr?= <*****@*****.**>";
            AssertParseAndTryParse(text, "Kristoffer =?iso-8859-1?q?Br=E5nemyr?= <*****@*****.**>", expected);

            mailbox.Name    = "François Pons";
            mailbox.Address = "*****@*****.**";
            text            = "=?iso-8859-1?q?Fran=E7ois?= Pons <*****@*****.**>";
            AssertParseAndTryParse(text, text, expected);
        }
コード例 #34
0
        public static void AddAdresses(this InternetAddressList internetAddressList, string addresses)
        {
            if (string.IsNullOrEmpty(addresses))
            {
                return;
            }

            var emailChecker = new EmailAddressAttribute();

            foreach (string adress in addresses.Split(';'))
            {
                if (!emailChecker.IsValid(adress))
                {
                    continue;
                }
                internetAddressList.Add(new MailboxAddress("", adress));
            }
        }
コード例 #35
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);
			}
		}
コード例 #36
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);
		}
コード例 #37
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);
		}
コード例 #38
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);
		}
コード例 #39
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);
		}
コード例 #40
0
		public void TestMailboxesWithRfc2047EncodedNames ()
		{
			var expected = new InternetAddressList ();
			var mailbox = new MailboxAddress ("", "");
			string text;

			expected.Add (mailbox);

			mailbox.Name = "Kristoffer Brånemyr";
			mailbox.Address = "*****@*****.**";
			text = "=?iso-8859-1?q?Kristoffer_Br=E5nemyr?= <*****@*****.**>";
			AssertParseAndTryParse (text, "Kristoffer =?iso-8859-1?q?Br=E5nemyr?= <*****@*****.**>", expected);

			mailbox.Name = "François Pons";
			mailbox.Address = "*****@*****.**";
			text = "=?iso-8859-1?q?Fran=E7ois?= Pons <*****@*****.**>";
			AssertParseAndTryParse (text, text, expected);
		}
コード例 #41
0
		public void TestListWithGroupAndAddrspec ()
		{
			const string text = "GNOME Hackers: Miguel de Icaza <*****@*****.**>, Havoc Pennington <*****@*****.**>;, [email protected]";
			const string encoded = "GNOME Hackers: Miguel de Icaza <*****@*****.**>, Havoc Pennington\n\t<*****@*****.**>;, [email protected]";
			var expected = new InternetAddressList ();

			expected.Add (new GroupAddress ("GNOME Hackers", new InternetAddress[] {
				new MailboxAddress ("Miguel de Icaza", "*****@*****.**"),
				new MailboxAddress ("Havoc Pennington", "*****@*****.**")
			}));
			expected.Add (new MailboxAddress ("", "*****@*****.**"));

			AssertParseAndTryParse (text, encoded, expected);
		}
コード例 #42
0
		public void TestExampleAddrSpecWithQuotedLocalPartAndCommentsFromRfc822 ()
		{
			const string text = "\":sysmail\"@  Some-Group. Some-Org,\n Muhammed.(I am  the greatest) Ali @(the)Vegas.WBA";
			const string encoded = "\":sysmail\"@Some-Group.Some-Org, [email protected]";
			var expected = new InternetAddressList ();

			expected.Add (new MailboxAddress ("", "\":sysmail\"@Some-Group.Some-Org"));
			expected.Add (new MailboxAddress ("", "*****@*****.**"));

			AssertParseAndTryParse (text, encoded, expected);
		}
コード例 #43
0
		public void TestEquality ()
		{
			var list1 = new InternetAddressList ();

			list1.Add (new GroupAddress ("Local recipients", new InternetAddress[] {
				new MailboxAddress ("", "phil"),
				new MailboxAddress ("", "joe"),
				new MailboxAddress ("", "alex"),
				new MailboxAddress ("", "bob"),
			}));
			list1.Add (new MailboxAddress ("Joey", "*****@*****.**"));
			list1.Add (new MailboxAddress ("Chandler", "*****@*****.**"));

			var list2 = new InternetAddressList ();

			list2.Add (new MailboxAddress ("Chandler", "*****@*****.**"));
			list2.Add (new GroupAddress ("Local recipients", new InternetAddress[] {
				new MailboxAddress ("", "phil"),
				new MailboxAddress ("", "joe"),
				new MailboxAddress ("", "alex"),
				new MailboxAddress ("", "bob"),
			}));
			list2.Add (new MailboxAddress ("Joey", "*****@*****.**"));

			Assert.IsTrue (list1.Equals (list2), "The 2 lists should be equal.");
		}
コード例 #44
0
		public void TestMailboxWithDotsInTheName ()
		{
			const string encoded = "\"Nathaniel S. Borenstein\" <*****@*****.**>";
			const string text = "Nathaniel S. Borenstein <*****@*****.**>";
			var expected = new InternetAddressList ();

			expected.Add (new MailboxAddress ("Nathaniel S. Borenstein", "*****@*****.**"));

			AssertParseAndTryParse (text, encoded, expected);
		}
コード例 #45
0
		public void TestExampleGroupWithCommentsFromRfc5322 ()
		{
			const string text = "A Group(Some people):Chris Jones <c@(Chris's host.)public.example>, [email protected], John <*****@*****.**> (my dear friend); (the end of the group)";
			const string encoded = "A Group: Chris Jones <*****@*****.**>, [email protected], John <*****@*****.**>;";
			var expected = new InternetAddressList ();

			expected.Add (new GroupAddress ("A Group", new InternetAddress[] {
				new MailboxAddress ("Chris Jones", "*****@*****.**"),
				new MailboxAddress ("", "*****@*****.**"),
				new MailboxAddress ("John", "*****@*****.**")
			}));

			AssertParseAndTryParse (text, encoded, expected);
		}
コード例 #46
0
		public void TestLocalGroupWithoutSemicolon ()
		{
			const string text = "Local recipients: phil, joe, alex, bob";
			const string encoded = "Local recipients: phil, joe, alex, bob;";
			var expected = new InternetAddressList ();

			expected.Add (new GroupAddress ("Local recipients", new InternetAddress[] {
				new MailboxAddress ("", "phil"),
				new MailboxAddress ("", "joe"),
				new MailboxAddress ("", "alex"),
				new MailboxAddress ("", "bob"),
			}));

			AssertTryParse (text, encoded, expected);

			//Assert.Throws<ParseException> (() => InternetAddressList.Parse (text), "Parsing should have failed.");
		}
コード例 #47
0
		public void TestCompareTo ()
		{
			var list1 = new InternetAddressList ();

			list1.Add (new GroupAddress ("Local recipients", new InternetAddress[] {
				new MailboxAddress ("", "phil"),
				new MailboxAddress ("", "joe"),
				new MailboxAddress ("", "alex"),
				new MailboxAddress ("", "bob"),
			}));
			list1.Add (new MailboxAddress ("Joey", "*****@*****.**"));
			list1.Add (new MailboxAddress ("Chandler", "*****@*****.**"));

			var list2 = new InternetAddressList ();

			list2.Add (new MailboxAddress ("Chandler", "*****@*****.**"));
			list2.Add (new GroupAddress ("Local recipients", new InternetAddress[] {
				new MailboxAddress ("", "phil"),
				new MailboxAddress ("", "joe"),
				new MailboxAddress ("", "alex"),
				new MailboxAddress ("", "bob"),
			}));
			list2.Add (new MailboxAddress ("Joey", "*****@*****.**"));

			Assert.IsTrue (list1.CompareTo (list2) > 0, "CompareTo() should return < 0.");
			Assert.IsTrue (list2.CompareTo (list1) < 0, "CompareTo() should return > 0.");
		}
コード例 #48
0
ファイル: ImapUtils.cs プロジェクト: BehnamEmamian/MailKit
		static void ParseEnvelopeAddressList (InternetAddressList list, ImapEngine engine, CancellationToken cancellationToken)
		{
			var token = engine.ReadToken (cancellationToken);

			if (token.Type == ImapTokenType.Nil)
				return;

			if (token.Type != ImapTokenType.OpenParen)
				throw ImapEngine.UnexpectedToken (token, false);

			GroupAddress group = null;

			do {
				token = engine.ReadToken (cancellationToken);

				if (token.Type == ImapTokenType.CloseParen)
					break;

				if (token.Type != ImapTokenType.OpenParen)
					throw ImapEngine.UnexpectedToken (token, false);

				var item = ParseEnvelopeAddress (engine, cancellationToken);

				if (item.IsGroupStart && !engine.IsGMail && group == null) {
					group = item.ToGroupAddress ();
					list.Add (group);
				} else if (item.IsGroupEnd) {
					group = null;
				} else if (group != null) {
					group.Members.Add (item.ToMailboxAddress ());
				} else {
					list.Add (item.ToMailboxAddress ());
				}
			} while (true);
		}
コード例 #49
0
		public void TestSimpleAddrSpecWithTrailingDot ()
		{
			const string encoded = "*****@*****.**";
			const string text = "[email protected].";
			var expected = new InternetAddressList ();
			var mailbox = new MailboxAddress ("", "");

			expected.Add (mailbox);

			mailbox.Address = "*****@*****.**";
			AssertParseAndTryParse (text, encoded, expected);
		}
コード例 #50
0
		public void TestExampleMailboxWithCommentsFromRfc5322 ()
		{
			const string text = "Pete(A nice \\) chap) <pete(his account)@silly.test(his host)>";
			const string encoded = "Pete <*****@*****.**>";
			var expected = new InternetAddressList ();

			expected.Add (new MailboxAddress ("Pete", "*****@*****.**"));

			AssertParseAndTryParse (text, encoded, expected);
		}
コード例 #51
0
ファイル: SmtpClient.cs プロジェクト: jstedfast/MailKit
		/// <summary>
		/// Expand a mailing address alias.
		/// </summary>
		/// <remarks>
		/// Expands a mailing address alias.
		/// </remarks>
		/// <returns>The expanded list of mailbox addresses.</returns>
		/// <param name="alias">The mailing address alias.</param>
		/// <param name="cancellationToken">The cancellation token.</param>
		/// <exception cref="System.ArgumentNullException">
		/// <paramref name="alias"/> is <c>null</c>.
		/// </exception>
		/// <exception cref="System.ArgumentException">
		/// <paramref name="alias"/> is an empty string.
		/// </exception>
		/// <exception cref="System.ObjectDisposedException">
		/// The <see cref="SmtpClient"/> has been disposed.
		/// </exception>
		/// <exception cref="ServiceNotConnectedException">
		/// The <see cref="SmtpClient"/> is not connected.
		/// </exception>
		/// <exception cref="ServiceNotAuthenticatedException">
		/// Authentication is required before verifying the existence of an address.
		/// </exception>
		/// <exception cref="System.OperationCanceledException">
		/// The operation has been canceled.
		/// </exception>
		/// <exception cref="System.IO.IOException">
		/// An I/O error occurred.
		/// </exception>
		/// <exception cref="SmtpCommandException">
		/// The SMTP command failed.
		/// </exception>
		/// <exception cref="SmtpProtocolException">
		/// An SMTP protocol exception occurred.
		/// </exception>
		public InternetAddressList Expand (string alias, CancellationToken cancellationToken = default (CancellationToken))
		{
			if (alias == null)
				throw new ArgumentNullException (nameof (alias));

			if (alias.Length == 0)
				throw new ArgumentException ("The alias cannot be empty.", nameof (alias));

			if (alias.IndexOfAny (new [] { '\r', '\n' }) != -1)
				throw new ArgumentException ("The alias cannot contain newline characters.", nameof (alias));

			CheckDisposed ();

			if (!IsConnected)
				throw new ServiceNotConnectedException ("The SmtpClient is not connected.");

			var response = SendCommand (string.Format ("EXPN {0}", alias), cancellationToken);

			if (response.StatusCode != SmtpStatusCode.Ok)
				throw new SmtpCommandException (SmtpErrorCode.UnexpectedStatusCode, response.StatusCode, response.Response);

			var lines = response.Response.Split ('\n');
			var list = new InternetAddressList ();

			for (int i = 0; i < lines.Length; i++) {
				InternetAddress address;

				if (InternetAddress.TryParse (lines[i], out address))
					list.Add (address);
			}

			return list;
		}
コード例 #52
0
		public void TestSimpleAddrSpec ()
		{
			var expected = new InternetAddressList ();
			var mailbox = new MailboxAddress ("", "");
			string text;

			expected.Add (mailbox);

			text = "*****@*****.**";
			mailbox.Address = "*****@*****.**";
			AssertParseAndTryParse (text, text, expected);

			text = "fejj";
			mailbox.Address = "fejj";
			AssertParseAndTryParse (text, text, expected);
		}
コード例 #53
0
        public void TestMailboxWithDotsInTheName()
        {
            var expected = new InternetAddressList ();
            InternetAddressList result;
            string text;

            text = "Nathaniel S. Borenstein <*****@*****.**>";

            expected.Add (new MailboxAddress ("Nathaniel S. Borenstein", "*****@*****.**"));

            Assert.IsTrue (InternetAddressList.TryParse (text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual (text, expected, result);

            result = InternetAddressList.Parse (text);
            AssertInternetAddressListsEqual (text, expected, result);
        }
コード例 #54
0
        public void TestObsoleteMailboxRoutingSyntaxWithEmptyDomains()
        {
            var expected = new InternetAddressList ();
            InternetAddressList result;
            string text;

            text = "Routed Address <@route1,,@route2,,,@route3:[email protected]>";

            expected.Add (new MailboxAddress ("Routed Address", new [] { "route1", "route2", "route3" }, "*****@*****.**"));

            Assert.IsTrue (InternetAddressList.TryParse (text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual (text, expected, result);

            result = InternetAddressList.Parse (text);
            AssertInternetAddressListsEqual (text, expected, result);
        }
コード例 #55
0
		public void TestMailboxWith8bitName ()
		{
			const string encoded = "Patrik =?iso-8859-1?b?RqVkbHRzdHKldm0=?= <*****@*****.**>";
			const string text = "Patrik F¥dltstr¥vm <*****@*****.**>";
			var expected = new InternetAddressList ();

			expected.Add (new MailboxAddress ("Patrik F¥dltstr¥vm", "*****@*****.**"));

			AssertParseAndTryParse (text, encoded, expected);
		}
コード例 #56
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);
		}
コード例 #57
0
		public void TestObsoleteMailboxRoutingSyntax ()
		{
			const string text = "Routed Address <@route:[email protected]>";
			var expected = new InternetAddressList ();

			expected.Add (new MailboxAddress ("Routed Address", new [] { "route" }, "*****@*****.**"));

			AssertParseAndTryParse (text, text, expected);
		}
コード例 #58
0
		public void TestObsoleteMailboxRoutingSyntaxWithEmptyDomains ()
		{
			const string text = "Routed Address <@route1,,@route2,,,@route3:[email protected]>";
			const string encoded = "Routed Address <@route1,@route2,@route3:[email protected]>";
			var expected = new InternetAddressList ();

			expected.Add (new MailboxAddress ("Routed Address", new [] { "route1", "route2", "route3" }, "*****@*****.**"));

			AssertParseAndTryParse (text, encoded, expected);
		}
コード例 #59
0
		public void TestSimpleMailboxes ()
		{
			var expected = new InternetAddressList ();
			var mailbox = new MailboxAddress ("", "");
			string text;

			expected.Add (mailbox);

			mailbox.Name = "Jeffrey Stedfast";
			mailbox.Address = "*****@*****.**";
			text = "Jeffrey Stedfast <*****@*****.**>";
			AssertParseAndTryParse (text, text, expected);

			mailbox.Name = "this is a folded name";
			mailbox.Address = "*****@*****.**";
			text = "this is\n\ta folded name <*****@*****.**>";
			AssertParseAndTryParse (text, "this is a folded name <*****@*****.**>", expected);

			mailbox.Name = "Jeffrey fejj Stedfast";
			mailbox.Address = "*****@*****.**";
			text = "Jeffrey \"fejj\" Stedfast <*****@*****.**>";
			AssertParseAndTryParse (text, "Jeffrey fejj Stedfast <*****@*****.**>", expected);

			mailbox.Name = "Jeffrey \"fejj\" Stedfast";
			mailbox.Address = "*****@*****.**";
			text = "\"Jeffrey \\\"fejj\\\" Stedfast\" <*****@*****.**>";
			AssertParseAndTryParse (text, text, expected);

			mailbox.Name = "Stedfast, Jeffrey";
			mailbox.Address = "*****@*****.**";
			text = "\"Stedfast, Jeffrey\" <*****@*****.**>";
			AssertParseAndTryParse (text, text, expected);

			mailbox.Name = "Jeffrey Stedfast";
			mailbox.Address = "*****@*****.**";
			text = "[email protected] (Jeffrey Stedfast)";
			AssertParseAndTryParse (text, "Jeffrey Stedfast <*****@*****.**>", expected);

			mailbox.Name = "Jeffrey Stedfast";
			mailbox.Address = "*****@*****.**";
			text = "Jeffrey Stedfast <fejj(recursive (comment) block)@helixcode.(and a comment here)com>";
			AssertParseAndTryParse (text, "Jeffrey Stedfast <*****@*****.**>", expected);

			mailbox.Name = "Jeffrey Stedfast";
			mailbox.Address = "*****@*****.**";
			text = "Jeffrey Stedfast <[email protected].>";
			AssertParseAndTryParse (text, "Jeffrey Stedfast <*****@*****.**>", expected);
		}
コード例 #60
0
        public void TestSimpleMailboxes()
        {
            var expected = new InternetAddressList ();
            var mailbox = new MailboxAddress ("", "");
            InternetAddressList result;
            string text;

            expected.Add (mailbox);

            mailbox.Name = "Jeffrey Stedfast";
            mailbox.Address = "*****@*****.**";
            text = "Jeffrey Stedfast <*****@*****.**>";
            Assert.IsTrue (InternetAddressList.TryParse (text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual (text, expected, result);

            result = InternetAddressList.Parse (text);
            AssertInternetAddressListsEqual (text, expected, result);

            mailbox.Name = "this is a folded name";
            mailbox.Address = "*****@*****.**";
            text = "this is\n\ta folded name <*****@*****.**>";
            Assert.IsTrue (InternetAddressList.TryParse (text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual (text, expected, result);

            result = InternetAddressList.Parse (text);
            AssertInternetAddressListsEqual (text, expected, result);

            mailbox.Name = "Jeffrey fejj Stedfast";
            mailbox.Address = "*****@*****.**";
            text = "Jeffrey \"fejj\" Stedfast <*****@*****.**>";
            Assert.IsTrue (InternetAddressList.TryParse (text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual (text, expected, result);

            result = InternetAddressList.Parse (text);
            AssertInternetAddressListsEqual (text, expected, result);

            mailbox.Name = "Jeffrey \"fejj\" Stedfast";
            mailbox.Address = "*****@*****.**";
            text = "\"Jeffrey \\\"fejj\\\" Stedfast\" <*****@*****.**>";
            Assert.IsTrue (InternetAddressList.TryParse (text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual (text, expected, result);

            result = InternetAddressList.Parse (text);
            AssertInternetAddressListsEqual (text, expected, result);

            mailbox.Name = "Stedfast, Jeffrey";
            mailbox.Address = "*****@*****.**";
            text = "\"Stedfast, Jeffrey\" <*****@*****.**>";
            Assert.IsTrue (InternetAddressList.TryParse (text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual (text, expected, result);

            result = InternetAddressList.Parse (text);
            AssertInternetAddressListsEqual (text, expected, result);

            mailbox.Name = "Jeffrey Stedfast";
            mailbox.Address = "*****@*****.**";
            text = "[email protected] (Jeffrey Stedfast)";
            Assert.IsTrue (InternetAddressList.TryParse (text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual (text, expected, result);

            result = InternetAddressList.Parse (text);
            AssertInternetAddressListsEqual (text, expected, result);

            mailbox.Name = "Jeffrey Stedfast";
            mailbox.Address = "*****@*****.**";
            text = "Jeffrey Stedfast <fejj(recursive (comment) block)@helixcode.(and a comment here)com>";
            Assert.IsTrue (InternetAddressList.TryParse (text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual (text, expected, result);

            result = InternetAddressList.Parse (text);
            AssertInternetAddressListsEqual (text, expected, result);
        }