Sends a MailMessage object using the SMTP settings.
using System; using System.IO; using System.Net.Mail; using System.Collections.Generic; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; using System.Configuration; using System.Globalization; using System.Web; using System.Web.Configuration; using System.Threading; using System.Reflection; using System.Collections; using System.Xml; using System.Net; using System.Web.Caching; namespace BlogEngine.Core { /// <summary> /// Utilities for the entire solution to use. /// </summary> public static class Utils { /// <summary> /// Sends a MailMessage object using the SMTP settings. /// </summary> public static void SendMailMessage(MailMessage message) { if (message == null) throw new ArgumentNullException("message"); try { message.IsBodyHtml = true; message.BodyEncoding = Encoding.UTF8; SmtpClient smtp = new SmtpClient(BlogSettings.Instance.SmtpServer); smtp.Credentials = new System.Net.NetworkCredential(BlogSettings.Instance.SmtpUserName, BlogSettings.Instance.SmtpPassword); smtp.Port = BlogSettings.Instance.SmtpServerPort; smtp.EnableSsl = BlogSettings.Instance.EnableSsl; smtp.Send(message); OnEmailSent(message); } catch (SmtpException) { OnEmailFailed(message); } finally { // Remove the pointer to the message object so the GC can close the thread. message.Dispose(); message = null; } } /// <summary> /// Sends the mail message asynchronously in another thread. /// </summary> /// <param name="message">The message to send.</param> public static void SendMailMessageAsync(MailMessage message) { ThreadPool.QueueUserWorkItem(delegate { Utils.SendMailMessage(message); }); } /// <summary> /// Occurs after an e-mail has been sent. The sender is the MailMessage object. /// </summary> public static event EventHandler<EventArgs> EmailSent; private static void OnEmailSent(MailMessage message) { if (EmailSent != null) { EmailSent(message, new EventArgs()); } } /// <summary> /// Occurs after an e-mail has been sent. The sender is the MailMessage object. /// </summary> public static event EventHandler<EventArgs> EmailFailed; private static void OnEmailFailed(MailMessage message) { if (EmailFailed != null) { EmailFailed(message, new EventArgs()); } } } }