|
Often we need to generate email responses from our ASP.NET applications. Users forget their passwords, need email confirmations, or we'd just like to send them a friendly thank you for signing up.
Now you could create that email message with a nice series of string concatenations, or some fancy xml/xslt transformation. But who needs that when there is an easier way using what's available from our aspx parser?
First thing to create is a typical user control. This will be your template.
ForgotPasswordEmail.ascx
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="ForgotPasswordEmail.ascx.cs" Inherits="EmailTemplateExample.ForgotPasswordEmail" %>
Here is your password reminder. ----------------------------------- YOUR ACCOUNT INFORMATION: Login:
<%
= Username
%>
Password:
<%
= Password
%>
----------------------------------- TO CHANGE YOUR ACCOUNT INFORMATION: You can change your account information by logging in and selecting 'Account Information'. This is an automated message; please do not reply to this email.
ForgotPasswordEmail.ascx.cs
namespace
EmailTemplateExample {
public
abstract
class
ForgotPasswordEmail : System.Web.
UI
.UserControl {
public
string
Username;
public
string
Password; } }
Once you have created the template, using it only takes a few lines of code.
using
System;
using
System.IO;
using
System.Web.UI;
using
System.Web.Mail; ...
//Load the user control
ForgotPasswordEmail emailTemplate = (ForgotPasswordEmail)LoadControl(
"~/ForgotPasswordEmail.ascx"
); emailTemplate.Username =
"jroberts"
; emailTemplate.Password =
"a7e945"
;
//Render the user control to a string
StringWriter stringWriter =
new
StringWriter(); HtmlTextWriter htmlWriter =
new
HtmlTextWriter(stringWriter); emailTemplate.RenderControl(htmlWriter);
string
body = stringWriter.ToString();
//Send the email
SmtpMail.SmtpServer =
"localhost"
; SmtpMail.Send(
,
,
"Password Reminder"
, body);
Your template could have more complex behavior, having the full power of the ASP.NET user control model. Additionally, using html in your user control to create html emails only requires properly setting the format of the MailMessage.
//Prepare
HTML
email
MailMessage mailMessage =
new
MailMessage(); mailMessage.From =
; mailMessage.Subject =
"Password Reminder"
; mailMessage.BodyFormat = MailFormat.Html; mailMessage.UrlContentBase =
"http://localhost/"
;
//Send the email
SmtpMail.SmtpServer =
"localhost"
; SmtpMail.Send(mailMessage);
|