En fuldt CODE-formaterede kopi af denne artikel findes PÅ CODEGOLEM BLOG
UPDATE: Du kan også læse denne artikel om CODING en genanvendelig HELPER MAILER CLASSable at sende templatede e-mails med indlejret Images of
Husk du kan bruge enhver UserControl, med nogen form for barnets kontrol i det.For eksempel dette kunne være en ordrebekræftelse mail, med en GriView bundet til en DataTable .eller måske en brugerregistrering e-mail, ved hjælp af en FormView et resumé af brugerens profildata.
Jeg vil bruge en simpel UserControl med en enkelt etiket, bare for at vise, hvordan det hele fungerer.
< p> [kode: html]
Hej
Dette er en UserControl-baserede mail-skabelon [/code]
Dette er en UserControl som dem vi normalt bruger i vores. webprojekter.
Jeg bruger her en etiket som en pladsholder for destinationen name.We kunne bruge så mange sådanne mærker efter behov i vores skabelon, eller endda billeder, så længe deres ImageURL er sat til absolutte URL'er .
Andet trin: erklære en interface til vores skabelon
[kode: c #].
offentlig grænseflade IMailTemplate {string DestinationName {få; sæt; }} [/code]
Vi vil få adgang til vores skabelon felt gennem denne grænseflade
Lad os ændre vores UserControl s codebehind at få det gennemføre IMailTemplate interfacet
[kode..: c #] offentlige delvis klasse TemplateMailer_MailTemplate: System.Web.UI.UserControl, IMailTemplate {public string DestinationName {få {vende tilbage DestinationNameLabel.Text; } Sæt {DestinationNameLabel.
Text = værdi; }}} [/Code]
Vores DestinationName ejendom får og indstiller værdien af Label vi brugt som en pladsholder.
Endelig, for at fuldføre denne lidt magi, her er koden til at oprette a. MailMessage ved hjælp af HTML-kode genereret af vores skabelon UserControl
Sige vi har en ASPX side med en knap til at generere og sende e-mail.This kunne være en simpel implementering af sin OnClick event handleren:
[kode: c #] beskyttede ugyldig SubmitButton_Click (objekt afsender, EventArgs e) {Kontrol mailTemplate = LoadControl ("MailTemplate.
ascx"); ((IMailTemplate) mailTemplate) .DestinationName = "Destination navn"; StringBuilder stringBuilder = ny StringBuilder (); StringWriter stringWriter = ny StringWriter (stringBuilder); HtmlTextWriter htmlTextWriter = ny HtmlTextWriter (stringWriter); mailTemplate.RenderControl (htmlTextWriter); htmlTextWriter.Close ();