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); }
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); }
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); }
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); }
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); } }
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); }
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); } }
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); } }
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); }
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); }
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."); }
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); }
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($"не отправлено (ошибка отправки)."); } }