項目開發中經常需要給用戶發送電子郵件,現在把我們項目中在用的一個電子郵件操作類分享給大家,這個類是使用 .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; } }