2009-10-28 11 views
6

Jaki byłby najprostszy sposób wysłania niestandardowego adresu e-mail HTML przy użyciu asp.net?ASP.NET MVC: Jak wysłać wiadomość e-mail w formacie HTML za pomocą kontrolera?

Podejrzewam, że najlepiej byłoby przesłać html przez e-mail, zamiast zwracać go do przeglądarki za pomocą ActionResult, jak zwykle. W ten sposób mogę utworzyć wiadomość e-mail jako widok, dostarczyć jej dane za pośrednictwem modelu, a następnie uruchomić ją przy użyciu standardowych wiadomości e-mail .NET.

To jest wykonalne/sposób to zrobić?

Dzięki,

+0

patrz również: http://stackoverflow.com/questions/118532/what-is-the-best Przepraszam, przepraszam, e-mail-from-asp-net-mvc –

Odpowiedz

9

http://www.brightmix.com/blog/renderpartial-to-string-in-asp-net-mvc/ ma dobre rozwiązanie dla renderowania celu sznurku, dzięki czemu można go wysłać w wiadomości e-mail.

/// 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

cześć, co to jest parametr "object viewData"? Co mamy zamiast tego, gdy metoda go nazwała? –

5

myślę wysyłanie wiadomości e-mail w MVC jest tak samo jak w formie internetowej, wystarczy ustawić atribute wiadomości poczty HTML jest włączony to jedzenie iść. Jak ten kod

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

, prawdopodobnie nie było jasne. id lubi móc wysyłać widok jako treść wiadomości e-mail zamiast zwracać ją do przeglądarki. :) – Sergio

-1

Trzeba również dodać poniżej kody przed wysłaniem poczty:

mailMessage.IsBodyHtml = true; 
Powiązane problemy