53 votes

Rasoir vues comme des modèles d'e-mail

Je suis entrain de créer un moteur de courrier électronique dans mvc3 et je suis en train d'utiliser de rasoir vues comme des modèles d'e-mail. J'ai entendu c'est possible, mais je n'ai pas encore trouvé aucune information à ce sujet.

63voto

BuildStarted Points 15931

Vous pouvez utiliser http://razorengine.codeplex.com/ pour atteindre cet objectif. Il vous permet d'utiliser de rasoir à l'extérieur de la mvc.

string Email = "Hello @Model.Name! Welcome to Razor!";
string EmailBody = Razor.Parse(Email, new { Name = "World" });

C'est simple à mettre en œuvre et il est disponible sur http://nuget.codeplex.com/ pour une intégration facile dans vos projets.

27voto

jlafay Points 4670

Vous POUVEZ utiliser un fichier de modèle de servir comme un rasoir corps du message électronique modèle. Vous pouvez utiliser n'importe quelle extension que vous choisissez parce que vous pouvez charger un fichier en tant que texte .Net. Nous allons utiliser l'exemple suivant pour le modèle:

Hello @Model.Name,

Welcome to @Model.SiteName!

Regards,
Site Admins

Enregistrez le fichier en tant que quelque chose comme "WelcomeMessage.cshtml", "WelcomeMessage.modèle", etc. Sélectionnez le fichier dans l'Explorateur de solutions et dans la fenêtre Propriétés, sélectionnez "Copier dans le Répertoire de Sortie" et choisissez "Copy". Le seul point est que ce modèle doit accompagner la demande et ne compile pas en tant que classe.

Maintenant, nous voulons analyser comme une chaîne de caractères à attribuer à un corps du message électronique. Rasoir prendre le modèle et un modèle de classe, les analyser, puis de retourner une chaîne de caractères avec les valeurs nécessaires. Dans votre application, vous devez ajouter le RazorEngine paquet qui peut être trouvé avec NuGet. Voici un court exemple de code pour illustrer l'utilisation:

using System.IO;
using RazorEngine;

// ...
MyModel model = new MyModel { Name = "User", SiteName = "Example.com" };
string template = File.OpenText("WelcomeMessage.template").ReadToEnd();
string message = Razor.Parse(template, model);

C'est comme pour les autres réponses, mais montre un moyen rapide pour charger le modèle à partir d'un fichier texte.

13voto

JT. Points 394

Vous devriez peut-être envisager de MvcMailer. RazorEngine est (très) bon si vous n'êtes pas déjà en utilisant MVC (je l'ai utilisé avec succès dans un webforms contexte), mais si vous avez MVC vous pouvez ainsi en profiter.

(via Hanselmen du package NuGet de la semaine 2)

4voto

Vous pouvez également utiliser Essentielle Mail: Rasoir paquet de NuGet. C'est la construction de plus de RazorEngine et fournit une interface simple pour les e-mails de rendu.

E-mail modèle de message ressemble à quelque chose comme

@inherits Essential.Templating.Razor.Email.EmailTemplate
@using System.Net;
@{
    From = new MailAddress("example@email.com");
    Subject = "Email Subject";
}
@section Html 
{
   <html>
      <head>
          <title>Example</title>
      </head>
      <body>
          <h1>HTML part of the email</h1>
      </body>
   </html>
}
@section Text 
{
    Text part of the email.
}

Lire plus sur GitHub: https://github.com/smolyakoff/essential-templating/wiki/Email-Template-with-Razor

3voto

thiagoleite Points 473

Vous voudrez peut-être essayer aussi cet article(code source inclus), il utilise un rasoir, mais il peut être utilisé à l'extérieur de la mvc. Très agréable http://kazimanzurrashid.com/posts/use-razor-for-email-template-outside-asp-dot-net-mvc

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X