public void MessagesFromList() { var recipients = new List <Recipient>(); for (var i = 0; i < 10; i++) { recipients.Add(new Recipient() { Email = $"recipient-{i}@example.com", Name = $"Name of {i}" }); } var mmm = new MailMergeMessage("Get MimeMessages Test", string.Empty, "<html><head></head><body>This is the plain text part for {Name} ({Email})</body></html>"); mmm.ConvertHtmlToPlainText(); mmm.MailMergeAddresses.Add(new MailMergeAddress(MailAddressType.From, "*****@*****.**")); mmm.MailMergeAddresses.Add(new MailMergeAddress(MailAddressType.To, "{Name}", "{Email}")); var cnt = 0; foreach (var mimeMessage in mmm.GetMimeMessages <Recipient>(recipients)) { Assert.IsTrue(mimeMessage.TextBody == string.Format($"This is the plain text part for {recipients[cnt].Name} ({recipients[cnt].Email})")); Assert.IsTrue(mimeMessage.HtmlBody.Contains(string.Format($"This is the plain text part for {recipients[cnt].Name} ({recipients[cnt].Email})"))); Assert.IsTrue(mimeMessage.To.ToString().Contains(recipients[cnt].Name) && mimeMessage.To.ToString().Contains(recipients[cnt].Email)); MailMergeMessage.DisposeFileStreams(mimeMessage); cnt++; // The message could be sent using the low-level API using a configured SmtpClient: // new SmtpClient().Send(FormatOptions.Default, mimeMessage); } }
public void MessagesFromDataRows() { var tbl = new DataTable(); tbl.Columns.Add("Email", typeof(string)); tbl.Columns.Add("Continent", typeof(string)); tbl.Rows.Add("*****@*****.**", "Europe"); tbl.Rows.Add("*****@*****.**", "Asia"); tbl.Rows.Add("*****@*****.**", "America"); var text = "Lorem ipsum dolor. Email={Email}, Continent={Continent}."; var mmm = new MailMergeMessage("Subject for {Continent}", text); mmm.MailMergeAddresses.Add(new MailMergeAddress(MailAddressType.From, "*****@*****.**")); mmm.MailMergeAddresses.Add(new MailMergeAddress(MailAddressType.To, "{Email}")); var i = 0; foreach (var mimeMessage in mmm.GetMimeMessages <DataRow>(tbl.Rows.OfType <DataRow>())) { Assert.IsTrue(mimeMessage.To.ToString().Contains(tbl.Rows[i]["Email"].ToString())); Assert.IsTrue(mimeMessage.TextBody.Contains(text.Replace("{Email}", tbl.Rows[i]["Email"].ToString()).Replace("{Continent}", tbl.Rows[i]["Continent"].ToString()))); MailMergeMessage.DisposeFileStreams(mimeMessage); i++; } }
public void MessagesFromJsonArray() { var recipients = JArray.Parse(@" [ { 'Email': '*****@*****.**', 'Name': 'John' }, { 'Email': '*****@*****.**', 'Name': 'Mary' }, { 'Email': '*****@*****.**', 'Name': 'Steve' } ] "); var mmm = new MailMergeMessage("Get MimeMessages JSON Test", string.Empty, "<html><head></head><body>This is the plain text part for {Name} ({Email})</body></html>"); mmm.ConvertHtmlToPlainText(); mmm.MailMergeAddresses.Add(new MailMergeAddress(MailAddressType.From, "*****@*****.**")); mmm.MailMergeAddresses.Add(new MailMergeAddress(MailAddressType.To, "{Name}", "{Email}")); var cnt = 0; foreach (var mimeMessage in mmm.GetMimeMessages(recipients)) { Assert.IsTrue(mimeMessage.TextBody == string.Format($"This is the plain text part for {recipients[cnt]["Name"]} ({recipients[cnt]["Email"]})")); Assert.IsTrue(mimeMessage.HtmlBody.Contains(string.Format($"This is the plain text part for {recipients[cnt]["Name"]} ({recipients[cnt]["Email"]})"))); Assert.IsTrue(mimeMessage.To.ToString().Contains(recipients[cnt]["Name"].ToString()) && mimeMessage.To.ToString().Contains(recipients[cnt]["Email"].ToString())); MailMergeMessage.DisposeFileStreams(mimeMessage); cnt++; } }
public void MessagesFromListOfSmartObjects() { var dataList = new List <SmartObjects>(); var so1 = new SmartObjects(new [] { new Dictionary <string, string>() { { "Email", "*****@*****.**" } }, new Dictionary <string, string>() { { "Continent", "Europe" } } }); var so2 = new SmartObjects(new[] { new Dictionary <string, string>() { { "Email", "*****@*****.**" } }, new Dictionary <string, string>() { { "Continent", "Asia" } } }); var so3 = new SmartObjects(new[] { new Dictionary <string, string>() { { "Email", "*****@*****.**" } }, new Dictionary <string, string>() { { "Continent", "America" } } }); dataList.AddRange(new [] { so1, so2, so3 }); var text = "Lorem ipsum dolor. Email={Email}, Continent={Continent}."; var mmm = new MailMergeMessage("Subject for {Continent}", text); mmm.MailMergeAddresses.Add(new MailMergeAddress(MailAddressType.From, "*****@*****.**")); mmm.MailMergeAddresses.Add(new MailMergeAddress(MailAddressType.To, "{Email}")); var i = 0; foreach (var mimeMessage in mmm.GetMimeMessages <SmartObjects>(dataList)) { Assert.IsTrue(mimeMessage.To.ToString().Contains(((Dictionary <string, string>)dataList[i][0])["Email"])); Assert.IsTrue(mimeMessage.TextBody.Contains(text.Replace("{Email}", ((Dictionary <string, string>)dataList[i][0])["Email"]).Replace("{Continent}", ((Dictionary <string, string>)dataList[i][1])["Continent"]))); MailMergeMessage.DisposeFileStreams(mimeMessage); i++; } }