Une copie de cet article ENTIÈREMENT CODE formaté EST DISPONIBLE SUR LE BLOG CODEGOLEM
MISE À JOUR: Vous pouvez aussi lire cet article sur le codage A REUSABLE HELPER MAILER classable pour envoyer des e-mails basés sur des modèles avec des images incorporées
Gardez à l'esprit que vous pouvez utiliser tout UserControl, avec tout type de contrôles enfants dans it.For exemple, ce pourrait être un courrier de confirmation de commande, avec un GriView lié à un DataTable .
ou peut-être un e-mail d'inscription de l'utilisateur, en utilisant un FormView comme un résumé des données de profil de l'utilisateur.
Je vais utiliser un UserControl simple avec une seule étiquette, juste pour montrer comment tout cela fonctionne.
< p> [code: html]
Bonjour
Ceci est un modèle de courrier basée UserControl-[/code]
Ceci est un UserControl comme ceux que nous utilisons normalement dans notre. projets web
. Je me sers ici d'une étiquette comme un espace réservé pour le name.
We de destination pourrait utiliser autant de ces étiquettes au besoin dans notre modèle, ou même des images, aussi longtemps que leur ImageUrl est réglé sur des URL absolues .
Deuxième étape: déclarer une interface pour notre modèle
[code: c #]. interface publique de IMailTemplate {string destinationName {get; ensemble; }} [/code]
Nous allons accéder au champ de notre modèle via cette interface
Disons modifier le code-behind de notre UserControl de l'avoir mise en œuvre de l'interface IMailTemplate
[code..
: c #] de TemplateMailer_MailTemplate public partial class: System.Web.UI.UserControl, IMailTemplate {destinationName public string {get {return DestinationNameLabel.Text; } Set {DestinationNameLabel.Text = valeur; }}} [/Code]
Notre propriété destinationName obtient et définit la valeur de l'étiquette, nous avons utilisé comme un espace réservé.
Enfin, pour terminer cette petite magie, voici le code pour créer . un code HTML généré par MailMessage utilisant notre UserControl modèle
Disons que nous avons une page ASPX avec un bouton pour générer et envoyer l'e-mail.
This pourrait être une simple mise en œuvre de son gestionnaire d'événement OnClick:
[code: c #] protégé SubmitButton_Click void (object sender, EventArgs e) {contrôle MailTemplate = LoadControl ("MailTemplate.ascx"); ((IMailTemplate) MailTemplate) .DestinationName = "Nom de destination"; St