2009-10-28 53 views
6

Cách đơn giản nhất để gửi email html tùy chỉnh bằng asp.net là gì?ASP.NET MVC: Cách gửi email html bằng bộ điều khiển?

Tôi cho rằng lý tưởng tôi muốn gửi html qua email thay vì trả lại cho trình duyệt thông qua ActionResult, như tôi thường làm. Bằng cách này tôi có thể xây dựng email như một cái nhìn, cung cấp nó với dữ liệu thông qua một mô hình và sau đó bắn nó bằng cách sử dụng các công cụ email chuẩn .NET.

Điều này khả thi/cách để làm điều đó?

Cảm ơn,

+0

cũng xem: http://stackoverflow.com/questions/118532/what-is-the-best -way-to-send-a-html-email-từ-asp-net-mvc –

Trả lời

9

http://www.brightmix.com/blog/renderpartial-to-string-in-asp-net-mvc/ có giải pháp tốt để hiển thị Chế độ xem thành chuỗi để bạn có thể gửi qua email.

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

hi, tham số 'object viewData' là gì? Những gì chúng ta có thay vào đó khi phương pháp gọi là nó? –

5

Tôi nghĩ rằng việc gửi email trong MVC chỉ là tương tự như trong biểu mẫu web, bạn chỉ cần thiết lập các atribute của thông điệp mail đến HTML kích hoạt sau đó nó là thực phẩm để đi. Giống như mã này

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

SmtpClient smtp = new SmtpClient(); 
smtp.Send(mm); 
+0

xin lỗi, tôi có thể không rõ ràng. id muốn có thể gửi chế độ xem làm nội dung email, thay vì trả lại cho trình duyệt. :) – Sergio

1

tôi sử dụng MVC Mailer cho tất cả các email của tôi nhu cầu

thấy liên kết dự án dưới đây để biết thêm thông tin

https://github.com/smsohan/MvcMailer

-1

Bạn cũng cần phải thêm bên dưới mã trước khi gửi mail:

mailMessage.IsBodyHtml = true; 
Các vấn đề liên quan