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
{
///
/// Utilities for the entire solution to use.
///
public static class Utils
{
///
/// Sends a MailMessage object using the SMTP settings.
///
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;
}
}
///
/// Sends the mail message asynchronously in another thread.
///
/// The message to send.
public static void SendMailMessageAsync(MailMessage message)
{
ThreadPool.QueueUserWorkItem(delegate { Utils.SendMailMessage(message); });
}
///
/// Occurs after an e-mail has been sent. The sender is the MailMessage object.
///
public static event EventHandler EmailSent;
private static void OnEmailSent(MailMessage message)
{
if (EmailSent != null)
{
EmailSent(message, new EventArgs());
}
}
///
/// Occurs after an e-mail has been sent. The sender is the MailMessage object.
///
public static event EventHandler EmailFailed;
private static void OnEmailFailed(MailMessage message)
{
if (EmailFailed != null)
{
EmailFailed(message, new EventArgs());
}
}
}
}