Sends a MailMessage object using the SMTP settings. : Mail « Network « C# / C Sharp






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

   
    
  








Related examples in the same category

1.SmtpClient: From, Subject, Body, Attachments, To
2.Mail Test
3.A POP3 e-mail checkerA POP3 e-mail checker
4.Fancy Mail Test
5.Mail Attach Test
6.Send Email
7.Send HTML Mail
8.Is Valid Email
9.Is Valid Email Address
10.Is Email
11.Smtp Send