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());
}
}
}
}