0

I have a controller where I execute email service like:

var englishtemplatePath = "HtmlTemplate/EnglishTemplate.html";
                    var englishTemplate = Path.Combine(_hostingEnvironment.WebRootPath, englishtemplatePath);
                    var englishFileContent = System.IO.File.ReadAllText(englishTemplate);
                    var englishEmailTemplate = new EmailTemplateModel
var englishEmailTemplate = new EmailTemplateModel
                    {
                        CallBackUrl = callbackurl,
                        UrlText = "text1",
                        WelcomeText = "text2",
                        VerifyText = "text3",
                        VerifyNowText = "ACTIVATE",
                        TroubleText = "text4",
                        Footer = "text5"
                    };

then I have a service to send email like this:

public async Task Execute(string email, string subject, EmailTemplateModel model, string template)
        {
            try
            {
                string toEmail = string.IsNullOrEmpty(email)
                                 ? _emailSettings.ToEmail
                                 : email;
                MailMessage mail = new MailMessage()
                {
                    From = new MailAddress(_emailSettings.UsernameEmail, "Subject")
                };
                mail.To.Add(new MailAddress(toEmail));
                mail.CC.Add(new MailAddress(_emailSettings.CcEmail));


                mail.Subject =  subject;

                mail.Body = template.Replace("{{CallBackUrl}}", model.CallBackUrl)
                                    .Replace("{{UrlText}}", model.UrlText)
                                    .Replace("{{WelcomeText}}", model.WelcomeText)
                                    .Replace("{{VerifyText}}", model.VerifyText)
                                    .Replace("{{VerifyNowText}}", model.VerifyNowText)
                                    .Replace("{{TroubleText}}", model.TroubleText)
                                    .Replace("{{CallBackUrl}}", model.CallBackUrl)
                                    .Replace("{{Footer}}", model.Footer);

                mail.IsBodyHtml = true;
                mail.Priority = MailPriority.High;

                using (SmtpClient smtp = new SmtpClient(_emailSettings.PrimaryDomain, _emailSettings.PrimaryPort))
                {
                    smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                    smtp.UseDefaultCredentials = false;
                    smtp.Credentials = new NetworkCredential(_emailSettings.UsernameEmail, _emailSettings.UsernamePassword);
                    smtp.EnableSsl = true;
                    await smtp.SendMailAsync(mail);
                }
            }
            catch (Exception ex)
            {
                //do something here
            }
        }

As you can see, I receive parameters from model and I replace them into template where parameters are like:

{{CallBackUrl}}

It works well, but now instead this I want to receive html table like:

<table style="width:100%">
  <tr>
    <th>Firstname</th>
    <th>Lastname</th> 
    <th>Age</th>
  </tr>
  <tr>
    <td>Jill</td>
    <td>Smith</td>
    <td>50</td>
  </tr>
  <tr>
    <td>Eve</td>
    <td>Jackson</td>
    <td>94</td>
  </tr>
  <tr>
    <td>John</td>
    <td>Doe</td>
    <td>80</td>
  </tr>
</table>

How can I receive it? in simple string? and I replace it as others? just using Replace? Regards

Pedro
  • 1
  • 2

1 Answers1

0

Do you mention about the email will show raw html? If yes, you can replace tag table td tr by <table> <td> .. ref: What do &lt; and &gt; stand for?