public void TestExampleAddrSpecWithQuotedLocalPartAndCommentsFromRfc822()
        {
            var expected = new InternetAddressList();
            InternetAddressList result;
            string text;

            text = "\":sysmail\"@  Some-Group. Some-Org,\n Muhammed.(I am  the greatest) Ali @(the)Vegas.WBA";

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

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

            result = InternetAddressList.Parse(text);
            AssertInternetAddressListsEqual(text, expected, result);
        }
Esempio n. 2
0
        static void AssertTryParse(string text, string encoded, InternetAddressList expected)
        {
            var buffer = Encoding.UTF8.GetBytes(text);
            InternetAddressList result;

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

            Assert.IsTrue(InternetAddressList.TryParse(buffer, out result), "TryParse(byte[]): {0}", text);
            AssertInternetAddressListsEqual(encoded, expected, result);

            Assert.IsTrue(InternetAddressList.TryParse(buffer, 0, out result), "TryParse(byte[], int): {0}", text);
            AssertInternetAddressListsEqual(encoded, expected, result);

            Assert.IsTrue(InternetAddressList.TryParse(buffer, 0, buffer.Length, out result), "TryParse(byte[] int, int): {0}", text);
            AssertInternetAddressListsEqual(encoded, expected, result);
        }
Esempio n. 3
0
        public void TestListWithGroupAndAddrspec()
        {
            InternetAddressList expected = new InternetAddressList();
            InternetAddressList result;
            string text;

            text = "GNOME Hackers: Miguel de Icaza <*****@*****.**>, Havoc Pennington <*****@*****.**>;, [email protected]";

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

            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(text, expected, result);
        }
Esempio n. 4
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);
        }
Esempio n. 5
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);
        }
        public void TestTryParseWhiteSpace()
        {
            try {
                InternetAddress address;

                Assert.IsFalse(InternetAddress.TryParse("   ", out address), "InternetAddress.TryParse() should fail to parse whitespace.");
            } catch (Exception ex) {
                Assert.Fail("InternetAddress.TryParse() should not throw an exception: {0}", ex);
            }

            try {
                InternetAddressList list;

                Assert.IsFalse(InternetAddressList.TryParse("   ", out list), "InternetAddressList.TryParse() should fail to parse whitespace.");
            } catch (Exception ex) {
                Assert.Fail("InternetAddressList.TryParse() should not throw an exception: {0}", ex);
            }
        }
Esempio n. 7
0
        public void TestLocalGroupWithoutSemicolon()
        {
            InternetAddressList expected = new InternetAddressList();
            InternetAddressList result;
            string text;

            text = "Local recipients: phil, joe, alex, bob";

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

            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(text, expected, result);
        }
Esempio n. 8
0
        public void TestInternationalEmailAddresses()
        {
            const string        text = "伊昭傑@郵件.商務, राम@मोहन.ईन्फो, юзер@екзампл.ком, θσερ@εχαμπλε.ψομ";
            InternetAddressList list;

            Assert.IsTrue(InternetAddressList.TryParse(text, out list), "Failed to parse international email addresses.");
            Assert.AreEqual(4, list.Count, "Unexpected number of international email addresses.");

            var addresses = text.Split(',');

            for (int i = 0; i < addresses.Length; i++)
            {
                var mailbox = (MailboxAddress)list[i];

                addresses[i] = addresses[i].Trim();

                Assert.AreEqual(addresses[i], mailbox.Address, "International address #{0} did not match.", i);
            }
        }
Esempio n. 9
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. 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          options  = FormatOptions.Default.Clone();
            var          list     = new InternetAddressList();

            list.Add(mailbox);

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

            var actual = list.ToString(options, 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 TestSimpleAddrSpec()
        {
            InternetAddressList expected = new InternetAddressList();
            MailboxAddress      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);

            text            = "fejj";
            mailbox.Address = "fejj";
            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(text, expected, result);
        }
Esempio n. 12
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();
            InternetAddressList result;

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

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

            //Assert.Throws<ParseException> (() => InternetAddressList.Parse (text), "Parsing should have failed.");
        }
Esempio n. 13
0
        public void TestMailboxesWithRfc2047EncodedNames()
        {
            InternetAddressList expected = new InternetAddressList();
            MailboxAddress      mailbox  = new MailboxAddress("", "");
            InternetAddressList result;
            string text;

            expected.Add(mailbox);

            mailbox.Name    = "Kristoffer Brånemyr";
            mailbox.Address = "*****@*****.**";
            text            = "=?iso-8859-1?q?Kristoffer_Br=E5nemyr?= <*****@*****.**>";
            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(text, expected, result);

            mailbox.Name    = "François Pons";
            mailbox.Address = "*****@*****.**";
            text            = "=?iso-8859-1?q?Fran=E7ois?= Pons <*****@*****.**>";
            Assert.IsTrue(InternetAddressList.TryParse(text, out result), "Failed to parse: {0}", text);
            AssertInternetAddressListsEqual(text, expected, result);
        }
        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);

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

            result = InternetAddressList.Parse(text);
            AssertInternetAddressListsEqual(text, expected, result);
        }
Esempio n. 15
0
        public string SendMessage(MessageSendContainer msc)
        {
            var message = new MimeMessage();

            message.From.Add(new MailboxAddress(msc.SmtpAccountPerson_CompanyUse,
                                                msc.SmtpAccountEmailUse));
            InternetAddressList addresses = new InternetAddressList();
            bool yes = InternetAddressList.TryParse(ParserOptions.Default, msc.EmailAddressesTo, out addresses);

            if (!yes)
            {
                return($"Не отправлено (не указаны адресаты) письмо: '{msc.Subject}'");
            }
            message.To.AddRange(addresses);
            message.Subject = msc.Subject;
            message.Body    = new TextPart("plain")
            {
                Text = msc.Body
            };

            try
            {
                using var client = new SmtpClient();
                client.Connect(msc.SmtpServerUse, msc.PortUse, msc.SSLUse);
                client.Authenticate(msc.SmtpAccountEmailUse, _TextEncoder.Decode(msc.SmtpAccountPasswordUse));
                client.Send(message);
                client.Disconnect(true);
                msc.Status = "2";
                return($"отправлено адресатам.");
            }
            catch (ObjectDisposedException)
            {
                msc.Status = "0";
                return($"не отправлено (утилизировано).");
            }
            catch (ServiceNotConnectedException)
            {
                msc.Status = "0";
                return($"не отправлено (ошибка соединения с сервером).");
            }
            catch (ServiceNotAuthenticatedException)
            {
                msc.Status = "0";
                return($"не отправлено (ошибка аутентификации).");
            }
            catch (InvalidOperationException)
            {
                msc.Status = "0";
                return($"не отправлено (не указан отправитель).");
            }
            catch (OperationCanceledException)
            {
                msc.Status = "0";
                return($"не отправлено (операция отменена).");
            }
            catch (ProtocolException)
            {
                msc.Status = "0";
                return($"не отправлено (ошибка отправки).");
            }
        }