項目開發中經常需要給用戶發送電子郵件,現在把我們項目中在用的一個電子郵件操作類分享給大家,這個類是使用 .Net 類庫中 System.Net.Mail 命名空間中的類發送電子郵件的。
/// <summary>
/// 電子郵件操作類。
/// </summary>
public class Mail
{
/// <summary>
/// 初始化一個電子郵件操作類的空實例。
/// </summary>
public Mail()
{
}
/// <summary>
/// 初始化一個電子郵件操作類的實例。
/// </summary>
/// <param name="from">發件人的電子郵件地址。</param>
/// <param name="fromName">發件人的姓名。</param>
/// <param name="recipient">收件人的電子郵件地址。</param>
/// <param name="recipientName">收件人的姓名。</param>
/// <param name="subject">電子郵件的主題。</param>
/// <param name="body">電子郵件的內容。</param>
/// <param name="host">電子郵件的服務器地址。</param>
/// <param name="port">電子郵件的主機端口號。</param>
/// <param name="username">登錄電子郵件服務器的用戶名。</param>
/// <param name="password">登錄電子郵件服務器的用戶密碼。</param>
/// <param name="isBodyHtml">郵件的正文是否是HTML格式。</param>
/// <param name="file">郵件附件的文件路徑。</param>
public Mail(string from, string fromName, string recipient, string recipientName, string subject, string body, string host, int port, string username, string password, bool isBodyHtml, string filepath)
{
this._from = from;
this._fromName = fromName;
this._recipient = recipient;
this._recipientName = recipientName;
this._subject = subject;
this._body = body;
this._serverHost = host;
this._serverPort = port;
this._username = username;
this._password = password;
this._isBodyHtml = isBodyHtml;
this._attachment.Add(filepath);
}
/// <summary>
/// 初始化一個電子郵件操作類的實例。
/// </summary>
/// <param name="from">發件人的電子郵件地址。</param>
/// <param name="fromName">發件人的姓名。</param>
/// <param name="recipient">收件人的電子郵件地址。</param>
/// <param name="recipientName">收件人的姓名。</param>
/// <param name="subject">電子郵件的主題。</param>
/// <param name="body">電子郵件的內容。</param>
/// <param name="host">電子郵件的服務器地址。</param>
/// <param name="port">電子郵件的主機端口號。</param>
/// <param name="username">登錄電子郵件服務器的用戶名。</param>
/// <param name="password">登錄電子郵件服務器的用戶密碼。</param>
/// <param name="isBodyHtml">郵件的正文是否是HTML格式。</param>
public Mail(string from, string fromName, string recipient, string recipientName, string subject, string body, string host, int port, string username, string password, bool isBodyHtml)
: this(from, fromName, recipient, recipientName, subject, body, host, 25, username, password, isBodyHtml, null)
{
}
/// <summary>
/// 初始化一個電子郵件操作類的實例。
/// </summary>
/// <param name="from">發件人的電子郵件地址。</param>
/// <param name="fromName">發件人的姓名。</param>
/// <param name="recipient">收件人的電子郵件地址。</param>
/// <param name="recipientName">收件人的姓名。</param>
/// <param name="subject">電子郵件的主題。</param>
/// <param name="body">電子郵件的內容。</param>
/// <param name="host">電子郵件的服務器地址。</param>
/// <param name="port">電子郵件的主機端口號。</param>
/// <param name="username">登錄電子郵件服務器的用戶名。</param>
/// <param name="password">登錄電子郵件服務器的用戶密碼。</param>
/// <param name="isBodyHtml">郵件的正文是否是HTML格式。</param>
public Mail(string from, string fromName, string recipient, string recipientName, string subject, string body, string host, string username, string password)
: this(from, fromName, recipient, recipientName, subject, body, host, 25, username, password, false, null)
{
}
/// <summary>
/// 初始化一個電子郵件操作類的實例(郵件的正文非HTML格式,端口默認25)。
/// </summary>
/// <param name="from">發件人的電子郵件地址。</param>
/// <param name="recipient">收件人的電子郵件地址。</param>
/// <param name="subject">電子郵件的主題。</param>
/// <param name="body">電子郵件的內容。</param>
/// <param name="host">電子郵件的服務器地址。</param>
/// <param name="username">登錄電子郵件服務器的用戶名。</param>
/// <param name="password">登錄電子郵件服務器的用戶密碼。</param>
/// <param name="isBodyHtml">郵件的正文是否是HTML格式。</param>
public Mail(string from, string recipient, string subject, string body, string host, string username, string password)
: this(from, null, recipient, null, subject, body, host, 25, username, password, false, null)
{
}
/// <summary>
/// 初始化一個電子郵件操作類的實例(郵件的正文非HTML格式,端口默認25)。
/// </summary>
/// <param name="from">發件人的電子郵件地址。</param>
/// <param name="recipient">收件人的電子郵件地址。</param>
/// <param name="subject">電子郵件的主題。</param>
/// <param name="body">電子郵件的內容。</param>
/// <param name="port">電子郵件的主機端口號。</param>
/// <param name="host">電子郵件的服務器地址。</param>
/// <param name="username">登錄電子郵件服務器的用戶名。</param>
/// <param name="password">登錄電子郵件服務器的用戶密碼。</param>
public Mail(string from, string recipient, string subject, string body, string host, int port, string username, string password)
: this(from, null, recipient, null, subject, body, host, port, username, password, false, null)
{
}
private string _subject;
private string _body;
private string _from;
private string _fromName;
private string _recipientName;
private string _serverHost;
private int _serverPort;
private string _username;
private string _password;
private bool _isBodyHtml;
private string _recipient;
private List<string> _attachment = new List<string> { };
/// <summary>
/// 獲取或設置郵件的主題。
/// </summary>
public string Subject
{
get { return this._subject; }
set { this._subject = value; }
}
/// <summary>
/// 獲取或設置郵件的正文內容。
/// </summary>
public string Body
{
get { return this._body; }
set { this._body = value; }
}
/// <summary>
/// 獲取或設置發件人的郵件地址。
/// </summary>
public string From
{
get { return this._from; }
set { this._from = value; }
}
/// <summary>
/// 獲取或設置發件人的姓名。
/// </summary>
public string FromName
{
get { return this._fromName; }
set { this._fromName = value; }
}
/// <summary>
/// 獲取或設置收件人的姓名。
/// </summary>
public string RecipientName
{
get { return this._recipientName; }
set { this._recipientName = value; }
}
/// <summary>
/// 獲取或設置收件人的郵件地址。
/// </summary>
public string Recipient
{
get { return this._recipient; }
set { this._recipient = value; }
}
/// <summary>
/// 獲取或設置郵件服務器主機地址。
/// </summary>
public string ServerHost
{
get { return this._serverHost; }
set { this._serverHost = value; }
}
/// <summary>
/// 獲取或設置郵件服務器的端口號。
/// </summary>
public int ServerPort
{
set { this._serverPort = value; }
get { return this._serverPort; }
}
/// <summary>
/// 獲取或設置SMTP認證時使用的用戶名。
/// </summary>
public string Username
{
get { return this._username; }
set
{
if (value.Trim() != "")
{
this._username = value.Trim();
}
else
{
this._username = "";
}
}
}
/// <summary>
/// 獲取或設置SMTP認證時使用的密碼。
/// </summary>
public string Password
{
set { this._password = value; }
get { return this._password; }
}
/// <summary>
/// 獲取或設置指示郵件正文是否為 Html 格式的值。
/// </summary>
public bool IsBodyHtml
{
get { return this._isBodyHtml; }
set { this._isBodyHtml = value; }
}
/// <summary>
/// 獲取電子郵件附件。
/// </summary>
public List<string> Attachment
{
get { return this._attachment; }
set { this._attachment = value; }
}
///// <summary>
///// 添加一個收件人的郵箱地址。
///// </summary>
///// <param name="mailList">聯系人列表。</param>
///// <returns></returns>
//public bool AddRecipient(params string[] mailList)
//{
// this.Recipient = mailList[0].Trim();
// return true;
//}
/// <summary>
/// 添加電子郵件附件。
/// </summary>
/// <param name="fileList">文件列表。</param>
/// <returns>是否添加成功。</returns>
public bool AddAttachment(params string[] fileList)
{
if (fileList.Length > 0)
{
foreach (string file in fileList)
{
if (file != null)
{
this._attachment.Add(file);
}
else
{
return false;
}
}
return true;
}
else
{
return false;
}
}
/// <summary>
/// 發送電子郵件。
/// </summary>
/// <returns>是否發送成功。</returns>
public bool Send()
{
//初始化 MailMessage 對象。
MailMessage mail = new MailMessage();
Encoding encoding = Encoding.GetEncoding("utf-8");
mail.From = new MailAddress(this.From, this.FromName, encoding);
mail.To.Add(new MailAddress(this.Recipient, this.RecipientName));
mail.Subject = this.Subject;
mail.IsBodyHtml = this.IsBodyHtml;
mail.Body = this.Body;
mail.Priority = MailPriority.Normal;
mail.BodyEncoding = encoding;
if (this.Attachment.Count > 0)
{
foreach (string file in this.Attachment)
{
mail.Attachments.Add(new Attachment(file));
}
}
//初始化 SmtpClient 對象。
SmtpClient smtp = new SmtpClient();
smtp.Host = this.ServerHost;
smtp.Port = this.ServerPort;
smtp.Credentials = new NetworkCredential(this.Username, this.Password);
if (smtp.Port != 25)
{
smtp.EnableSsl = true;
}
try
{
smtp.Send(mail);
}
catch (SmtpException ex)
{
string message = ex.Message;
return false;
}
return true;
}
}
