ASP.NET MVC: Как отправить HTML-письмо с помощью контроллера? - PullRequest
7 голосов
/ 28 октября 2009

Какой самый простой способ отправить настроенное html-письмо, используя asp.net?

Полагаю, в идеале я хотел бы отправить html по электронной почте, а не возвращать его в браузер через ActionResult, как обычно. Таким образом, я мог бы создать электронную почту как представление, снабдить ее данными через модель, а затем запустить ее, используя стандартную электронную почту .NET.

Это возможно / способ сделать это?

Спасибо

Ответы [ 5 ]

9 голосов
/ 12 февраля 2010

Это сообщение в блоге имеет хорошее решение для рендеринга View в строку, чтобы вы могли отправить его по электронной почте.

/// Static Method to render string - put somewhere of your choosing
public static string RenderPartialToString(string controlName, object viewData)
{
     ViewDataDictionary vd = new ViewDataDictionary(viewData);
     ViewPage vp = new ViewPage { ViewData = vd };
     Control control = vp.LoadControl(controlName);

     vp.Controls.Add(control);

     StringBuilder sb = new StringBuilder();
     using (StringWriter sw = new StringWriter(sb))
     {
         using (HtmlTextWriter tw = new HtmlTextWriter(sw))
         {
             vp.RenderControl(tw);
         }
     }

     return sb.ToString();
}
5 голосов
/ 28 октября 2009

Я думаю, что отправка электронной почты в mvc такая же, как и в веб-форме, вам просто нужно установить для атрибута почтового сообщения значение «html», и тогда все готово. Мне нравится этот код

MailMessage mm = new MailMessage(emmailFrom,emailTo);
mm.Subject = "Your Subject";
mm.IsBodyHtml = true;
mm.Body = body.ToString();

SmtpClient smtp = new SmtpClient();
smtp.Send(mm);
1 голос
/ 08 июня 2013

Я использую MVC Mailer для всех своих почтовых потребностей

см. Ссылку на проект ниже для получения дополнительной информации

https://github.com/smsohan/MvcMailer

0 голосов
/ 15 мая 2019
    [HttpPost]
    public ActionResult SendEmail(string Type, string name, int Id, string subject, string message, HttpPostedFileBase uploadFile)
    {


        try
        {

            if (ModelState.IsValid)
            {
                var abc = _salesInvoiceMasterService.GetallInvoices().Where(a => a.TransId == Id).FirstOrDefault();

                var xyz = _accountMasterMainService.GetAllData().Where(a => a.Id == abc.CustId).FirstOrDefault();

                var mm = xyz.Email;
                if (mm == null)
                {
                    string isCheckNull = "No";
                    return Json(isCheckNull, JsonRequestBehavior.AllowGet);

                }

                var Sendermail = _systemSettingService.GetSetting().Where(a => a.BranchId == branchId && a.CompanyId == companyId && a.FinancialId == financialYId).FirstOrDefault();
                if (Sendermail.UserName == null)
                {
                    string isCheckNull = "Not";
                    return Json(isCheckNull, JsonRequestBehavior.AllowGet);
                }
                var User = Sendermail.UserName;
                var senderEmail = new MailAddress(Sendermail.UserName.ToString(), "Manabh Software");
                var receiverEmail = new MailAddress(mm, "Receiver");

                var password = Sendermail.Password;
                if (password == null)
                {
                    string isCheckNull = "PassNot";
                    return Json(isCheckNull, JsonRequestBehavior.AllowGet);
                }
                var sub = subject;
                var body = message;
                var smtp = new SmtpClient
                {
                    Host = "smtp.gmail.com",
                    Port = 587,
                    EnableSsl = true,
                    DeliveryMethod = SmtpDeliveryMethod.Network,
                    UseDefaultCredentials = true,
                    Credentials = new NetworkCredential(senderEmail.Address, password.ToString())


                };



                using (MailMessage mail = new MailMessage(senderEmail, receiverEmail))

                {
                    mail.Subject = subject;

                    mail.Body = message;                    

                    System.Net.Mail.Attachment attachment;
                    attachment = new System.Net.Mail.Attachment("D:/Users/Manabh/Downloads/SalesInvoice_" + Type + "_" + name + "_" + Id + ".pdf");

                    mail.Attachments.Add(attachment);

                    smtp.Send(mail);
                }

                return View();


            }
        }
        catch (Exception e)
        {

            string isCheckNull = "NotExist";
            return Json(isCheckNull, JsonRequestBehavior.AllowGet);

        }
        return View();
    }
0 голосов
/ 06 февраля 2017

Вам также необходимо добавить следующие коды перед отправкой почты:

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