【问题标题】:ASP.NET MVC: How to send an html email using a controller?ASP.NET MVC:如何使用控制器发送 html 电子邮件?
【发布时间】:2010-12-10 21:52:38
【问题描述】:

使用 asp.net 发送自定义 html 电子邮件的最简单方法是什么?

我想理想情况下我想通过电子邮件发送 html,而不是像往常那样通过 ActionResult 将其返回给浏览器。通过这种方式,我可以将电子邮件构建为视图,通过模型为其提供数据,然后使用标准的 .NET 电子邮件内容触发它。

这是可行的/这样做的方式吗?

谢谢,

【问题讨论】:

标签: asp.net html asp.net-mvc email


【解决方案1】:

blog post 有一个很好的解决方案,可以将视图呈现为字符串,以便您可以通过电子邮件发送。

/// 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();
}

【讨论】:

  • 嗨,object viewData 参数是什么?当方法调用它时我们有什么?
  • 此链接似乎已过期
【解决方案2】:

我认为在mvc中发送电子邮件和在web表单中发送电子邮件一样,您只需将邮件消息的属性设置为启用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);

【讨论】:

  • 抱歉,我可能不清楚。 id 希望能够将视图作为电子邮件的正文发送,而不是将其返回给浏览器。 :)
【解决方案3】:

我使用 MVC Mailer 来满足我所有的电子邮件需求

查看下面的项目链接了解更多信息

https://github.com/smsohan/MvcMailer

【讨论】:

    【解决方案4】:
        [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();
        }
    

    【讨论】:

      【解决方案5】:

      您还需要在发送邮件之前添加以下代码:

      mailMessage.IsBodyHtml = true;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-04
        • 2013-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-26
        • 1970-01-01
        相关资源
        最近更新 更多