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++;
            }
        }
Example #3
0
        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++;
            }
        }