The following is the SendEmail method:
privatevoid SendEmail()
{
Customer customer = CustomerData.GetCustomer(2);
MailDefinition mailDefinition =new MailDefinition();
mailDefinition.BodyFileName = "~/Email-Templates/Order-Confirmation.html";
mailDefinition.From ="[email protected]";
//Create a key-value collection of all the tokens you want to replace in your template...
ListDictionary ldReplacements = new ListDictionary();
ldReplacements.Add("<%FirstName%>", customer.FirstName);
ldReplacements.Add("<%LastName%>", customer.LastName);
ldReplacements.Add("<%Address1%>", customer.Address1);
ldReplacements.Add("<%Address2%>", customer.Address2);
ldReplacements.Add("<%City%>", customer.City);
ldReplacements.Add("<%State%>", customer.State);
ldReplacements.Add("<%Zip%>", customer.Zip);
string mailTo = string.Format("{0} {1} <{2}>", customer.FirstName, customer.LastName, customer.EmailAddress);
MailMessage mailMessage = mailDefinition.CreateMailMessage(mailTo, ldReplacements,this);
mailMessage.From =new MailAddress("[email protected]","test site");
mailMessage.IsBodyHtml = true;
mailMessage.Subject ="Order Details";
SmtpClient smtpClient = new SmtpClient(ConfigurationManager.AppSettings["SMTPServer"].ToString(), 25);
smtpClient.Send(mailMessage);
}
Your email template could be of any extension (txt, html, and so on) as long as its in a text format. I personally like to keep it in HTML format so that we can preview the email template in a browser. Basically it'll looks something like this:Hello <%FirstName%> <%LastName%>,
Thank you for creating an account with us. Here are your details:
<%Address1%>,
<%Address2%>
<%City%>, <%State%> <%Zip%>
Thank You,
My Site
Change the web.config file mail settings as in the following for setting mail host details:
<system.net>
<mailSettings>
<smtpfrom="[email protected]">
<networkhost="smtp.gmail.com" =""/>
</smtp>
</mailSettings>
</system.net>
Remarks
The MailDefinition class can be used by controls to create a MailMessage object from a text file or a string that contains the body of the e-mail message. Use the MailDefinitionclass to simplify creating predefined e-mail messages to be sent by a
control. If you want to send e-mail not using a control, see the System.Net.mail class.
You can make text substitutions in the body of the e-mail message by passing to the CreateMailMessage method an IDictionary instance that maps strings to their replacements.
Small Note :
The MailDefinition class does not support data binding. Properties of the MailDefinition class cannot be bound to data using the <%# %> data-binding expression syntax.