C# 電子郵件操作類


 

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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM