[英]ASP.NET MVC: How to send an html email using a controller?
使用asp.net发送自定义html电子邮件的最简单方法是什么?
我想理想情况下我想通过电子邮件发送html,而不是像往常一样通过ActionResult将其返回到浏览器。 通过这种方式,我可以将电子邮件构建为视图,通过模型为其提供数据,然后使用标准的.NET电子邮件内容将其激活。
这可行/这样做的方法?
谢谢,
此博客文章提供了一个很好的解决方案,可以将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();
}
我认为在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);
[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();
}
您还需要在发送邮件之前添加以下代码:
mailMessage.IsBodyHtml = true;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.