2014-04-18 4 views
10

Es scheint, wenn ich Post verwenden, um eine E-Mail mit Layout zu senden, wurden die Header nicht analysiert und in der E-Mail-Nachricht enthalten.Verwenden von Postal MVC mit Layout-Pars Header als Mailkörper

Views/E-Mails/_ViewStart.cshtml

@{ Layout = "~/Views/Emails/_EmailLayout.cshtml"; } 

Views/E-Mails/_EmailLayout.cshtml

<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>ViewEmails</title> 
</head> 
<body> 
    <div> 
     @RenderBody() 
    </div> 
</body> 
</html> 

Views/E-Mails/ResetPassword.cshtml

To: @ViewBag.To 
From: @ViewBag.From 
Subject: Reset Password 
Views: Html 

Views/E-Mails/ResetPassword.html.cshtml

Content-Type: text/html; charset=utf-8 

Here is your link, etc ... 

Wenn ich die E-Mail an alle Header erhalten, Von, Betreff und Ansichten werden im Körper enthalten.

Wer weiß, wie man es richtig macht?

AKTUALISIERT (Dank Andrew), das funktioniert:

Views/E-Mails/_EmailLayout.cshtml

@RenderSection("Headers", false) 
<!DOCTYPE html> 

<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>ViewEmails</title> 
</head> 
<body> 
    <div> 
     @RenderBody() 
    </div> 
</body> 
</html> 

Views/E-Mails/ResetPassword.cshtml

@section Headers { 
    To: @ViewBag.To 
    From: @ViewBag.From 
    Subject: Reset Password 
    Views: Html 
} 

Vi ews/E-Mails/ResetPassword.html.cshtml

@section Headers { 
    Content-Type: text/html; charset=utf-8 
} 

Here is your link, etc ... 

Antwort

14

Eine Möglichkeit ist es, einen Razor Abschnitt zu verwenden.

An der Spitze des Layouts add:

@RenderSection("Headers") 

dann in der Ansicht add:

@section Headers { 
    To: @ViewBag.To 
    From: @ViewBag.From 
    Subject: Reset Password 
    Views: Html 
} 
+0

Ich kann Postal nicht den Pfad zu dem _Layout.cshtml auflösen. Können Sie ein Beispiel dafür geben? – Andrew

0

Verschieben Sie die erste Zeile

Content-Type: text/html; charset = utf-8

von Views/E-Mails/ResetPassword.html.cshtml zu Views/E-Mails/_EmailLayout.cshtml

Content-Type: text/html; charset=utf-8 
<html> 
    <head> 
     <meta name="viewport" content="width=device-width" /> 
     <title>ViewEmails</title> 
    </head> 
    <body> 
     <div> 
      @RenderBody() 
     </div> 
    </body> 
</html> 
+0

Sorry, aber es nicht funktioniert, ist es nicht einmal den Körper zeigen. – puntapret

Verwandte Themen