Как я должен рендерить HTML в электронной почте, отправленной SmtpClient в C # - PullRequest
0 голосов
/ 28 августа 2018

Я хочу отправить свой текст, содержащий HTML-тег, как электронное письмо пользователю. Я пытаюсь декодировать HTML, используя HttpUtility.HtmlDecode:

 string subject = "email Subject";
     _emailService.SendEmail(subject, HttpUtility.HtmlDecode(post.Body), "info@myserver.com",
         "title", subscription.EmailAddress,
         subscription.EmailAddress); 

и вот SendEmail в MailService классе:

public void SendEmail(string subject, string body,
            string fromAddress, string fromName, string toAddress, string toName,
            string replyTo = null, string replyToName = null,
            IDictionary<string, string> headers = null)
        {
            var message = new MailMessage();
            //from, to, reply to
            message.From = new MailAddress(fromAddress, fromName);
            message.To.Add(new MailAddress(toAddress, toName));
            if (!String.IsNullOrEmpty(replyTo))
            {
                message.ReplyToList.Add(new MailAddress(replyTo, replyToName));
            }

            //content
            message.Subject = subject;
            message.Body = body;
            message.IsBodyHtml = true;

            //headers
            if (headers != null)
                foreach (var header in headers)
                {
                       message.Headers.Add(header.Key, header.Value);
                }

            try
            {
                var client = new SmtpClient("mail.myserver.com", 25)
                {
            Credentials = new NetworkCredential("info@myserver.com", "myEmailPassword"),
            EnableSsl = false
                };
                client.Send(message);

                //send email
            }
            catch (Exception exc)
            {

             logger.Error(exc.Message);

            }
        }  

Но мои пользователи получают письмо с простым HTML-кодом тега. Как я могу отправить HTML-текст в виде электронной почты, которая отображается в почтовом ящике пользователя?

1 Ответ

0 голосов
/ 28 августа 2018

Вот как я отправляю электронное письмо с моего контроллера с помощью Почты (http://aboutcode.net/postal/):

[ValidateInput(false)]
    public void SendFailureEmail()
    {
        var email = new EmailTemplateModel
        {
            ViewName = "~/Views/Emails/Template.cshtml",
            FromAddress = "sender@address.com",
            EmailAddress = "customer@address.com",
            Subject = "Task 1",
            SingleDate = DateTime.Now,
            Description = "Hello World",
        };
        email.Send();
    }

EmailTemplateModel:

public class EmailTemplateModel : Email
{
    public string FromAddress { get; set; }
    public string EmailAddress { get; set; }
    public string Subject { get; set; }
    public string Description { get; set; }
    public DateTime SingleDate { get; set; }
}

Я использую этот шаблон для создания HTML-элементов электронной почты:

@model App.Models.EmailTemplateModel
@using App.Utilities;

From: @Model.FromAddress
To: @Model.EmailAddress
Subject : @Model.Subject

<table style="width: 500px;">
    <tbody>
        <tr>
            <td>
                Date:
            </td>
            <td>
                @Model.SingleDate
            </td>
        </tr>
        <tr>
            <td>
                Description:
            </td>
            <td>
                @Model.Description
            </td>
        </tr> 
    </tbody>
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...