Получить строку HTML из представления для замены в шаблон - PullRequest
0 голосов
/ 17 мая 2018

У меня есть контроллер, где я выполняю почтовый сервис, например:

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"
                    };

тогда у меня есть служба для отправки электронной почты, например:

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
            }
        }

Как видите, я получаю параметры из модели и заменяю их в шаблон, где параметры имеют вид:

{{CallBackUrl}}

Работает хорошо, но теперь вместо этого я хочу получить html таблицу вроде:

<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>

Как я могу получить это? в простой строке? а я его заменю как другие? просто с помощью замены? Привет

1 Ответ

0 голосов
/ 17 мая 2018

Вы упомянули об электронной почте будет показывать сырой HTML? Если да, вы можете заменить таблицу тегов td tr на

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...