using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.IO; using System.Net.Mail; using System.Collections; using System.Collections.Specialized; public class TemplatedEmail { private MailMessage Message; public MailAddressCollection To { get { return Message.To; } } public MailAddressCollection Bcc { get { return Message.Bcc; } } public MailAddress From { get { return Message.From; } set { Message.From = value; } } public string Subject { get { return Message.Subject; } set { Message.Subject = value; } } public NameValueCollection TemplateVariables; public TemplatedEmail(Page Page, string filename) { string filepath = Page.Server.MapPath(filename); if (!File.Exists(filepath)) throw new Exception("No such file exists."); TemplateVariables = new NameValueCollection(); // instantiate our email Message = new MailMessage(); Message.IsBodyHtml = true; StreamReader sr = new StreamReader(filepath); string PossibleSubject = sr.ReadLine(); int SubjectIndex = PossibleSubject.IndexOf("[[SUBJECT: ") + 11; if (SubjectIndex > 10) { // this is the subject line int length = PossibleSubject.IndexOf("]]", SubjectIndex) - SubjectIndex; Message.Subject = PossibleSubject.Substring(SubjectIndex, length); Message.Body = sr.ReadToEnd(); } else { // this is not the subject line Message.Body = PossibleSubject + sr.ReadToEnd(); } sr.Close(); } public void Send() { try { foreach (string s in TemplateVariables) { while (Message.Body.IndexOf(s) > -1) Message.Body = Message.Body.Replace(s, TemplateVariables[s]); } SmtpClient sc = new SmtpClient(); sc.Send(Message); } catch (Exception e) { throw e; // dont take the whole program down just because mail failed to send // we need to add logging here later } } }