#694 - Template da user control per inviare e-mail

Quando c'è bisogno di generare un template abbastanza complesso, ad esempio con dati prelevati da database, può tornare utile la classe StringWriter, che in accoppiata con quella HtmlTextWriter consente di "scrivere" in una stringa l'output HTML di un web control.
Nell'esempio qui riportato il template è caricato da un semplice user control EmailOrder.ascx, che riceve attraverso il Context l'OrderID e genera a partire da quest'ultimo il template con i dati di riepilogo dell'ordine da inviare via e-mail.

// passo informazioni attraverso il Context


Context.Items["OrderID"] = orderID;

// carico il template - in email.ascx leggo il Context


Control template = LoadControl("EmailOrder.ascx");

// "scrivo" in una stringa il codice HTML generato dal template

string text;
using (StringWriter sw = new StringWriter())
  using (HtmlTextWriter source = new HtmlTextWriter(sw))
  {
    template.RenderControl(source);
    text = sw.ToString();
  }

// inviamo l'HTML via e-mail - vedere #365

m.BodyFormat = MailFormat.Html;
m.Body = text;

Per testare il corretto funzionamento dell'user control è sufficiente inserirlo in una pagina di test.
Lo script funziona anche con e-mail plain text, a patto che ci siano control all'interno del template che non producono codice HTML, come ad esempio Repeater o Literal.


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

leo64 scrive:
#694 - Template da user control per inviare e-mail

E' possibile avere un esempio completo di questo articolo ?Avrei bisogno di utilizzare proprio questa tecnica per produrre in automatico email Html ...
giovedì 5 maggio 2005 | 1 risposta

Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC