web-dev-qa-db-fra.com

Vues de rasoir en tant que modèles d'e-mail

Je crée un moteur de messagerie dans mvc3 et j'essaie d'utiliser des vues de rasoir comme modèles de courrier électronique. J'ai entendu dire que c'était possible mais je n'ai pas encore trouvé d'informations à ce sujet.

53
sTodorov

Vous pouvez utiliser http://razorengine.codeplex.com/ pour y parvenir. Il vous permet d'utiliser un rasoir en dehors de mvc.

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

Il est simple à implémenter et il est disponible sur http://nuget.codeplex.com/ pour une intégration facile dans vos projets.

63
Buildstarted

Vous POUVEZ utiliser un fichier de modèle pour servir de modèle de corps de courriel de rasoir. Vous pouvez utiliser l'extension que vous choisissez, car vous pouvez charger un fichier sous forme de texte dans .Net. Prenons l'exemple suivant pour le modèle:

Hello @Model.Name,

Welcome to @Model.SiteName!

Regards,
Site Admins

Enregistrez ce fichier sous quelque chose comme "WelcomeMessage.cshtml", "WelcomeMessage.template", 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 "Copier toujours". Le seul point négatif est que ce modèle doit accompagner l'application et ne se compile pas en tant que classe.

Maintenant, nous voulons l'analyser en tant que chaîne à affecter à un corps de message électronique. Razor prendra le modèle et une classe de modèle, les analysera, puis renverra une chaîne avec les valeurs nécessaires. Dans votre application, vous devrez ajouter le package RazorEngine qui peut être trouvé avec NuGet. Voici un exemple de code court 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);

Il est similaire aux autres réponses mais montre un moyen rapide de charger le modèle à partir d'un fichier texte.

27
jlafay

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

(via package NuGet de Hanselmen de la semaine 2 )

13
JT.

Vous pouvez également utiliser le package Essential Mail: Razor de NuGet. Il est construit sur RazorEngine et fournit une interface simple pour le rendu des e-mails.

Le modèle de message électronique ressemble à quelque chose

@inherits Essential.Templating.Razor.Email.EmailTemplate
@using System.Net;
@{
    From = new MailAddress("[email protected]");
    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.
}

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

4
Konstantin Smolyakov

Mailzor

Lié à ce que @thiagoleite a mentionné, j'ai pris l'idée de Kazi Manzur Rashid (avec permission) et je me suis étendu pour être plus convivial sur la façon dont je voulais l'utiliser.

Alors consultez le projet github 'mailzor'

C'est aussi sur Nuget.org/packages/mailzor

0
Nick Josevski