代码改变世界

C#简单邮件发送

2012-06-28 11:04  杭伟  阅读(303)  评论(0编辑  收藏  举报

写了一个通用方法,支持公司内部邮件服务器和使用SMTP服务商的邮件服务器。

Common.cs

View Code
using System;
using System.Collections.Generic;
using System.Text;

using System.Net.Mail;  //引入Mail命名空間

namespace WebMailTest
{
    /// <summary>
    /// C#郵件發送
    /// Author:www.cnblogs.com/hangwei
    /// </summary>
    public class Common
    {
        /// <summary>
        /// 發送郵件的方法
        /// </summary>
        /// <param name="inCompany">郵件服務器是否在公司內部</param>
        /// <param name="account">郵件帳號,若為公司內部服務器,可不填</param>
        /// <param name="pwd">郵件密碼,若為公司內部服務器,可不填</param>
        /// <param name="host">主機地址(SMTP地址)</param>
        /// <param name="port">端口</param>
        /// <param name="address">發件人地址</param>
        /// <param name="displayname">發件人顯示名稱</param>
        /// <param name="subject">郵件主旨</param>
        /// <param name="filepath">附件</param>
        /// <param name="toEmail">收件人</param>
        /// <param name="ccEmail">副本收件人</param>
        /// <param name="bccEmail">秘密副本收件人</param>
        /// <param name="body">郵件內容(HTML格式)</param>
        /// <returns>異常信息反饋,沒有則返回空值</returns>
        public static string SendMail(bool inCompany, string account, string pwd, string host, int port, string address, string displayname, string subject, string filepath, string toEmail, string ccEmail, string bccEmail, string body)
        {
            string errMsg = "";//錯誤返回信息

            //設置SmtpClient對象信息
            SmtpClient sClient = new SmtpClient(host, port);//創建SmtpClient對象
            if (inCompany == true)
                sClient.UseDefaultCredentials = true;//使用默認驗證
            else
                sClient.Credentials = new System.Net.NetworkCredential(account, pwd);//使用郵箱帳號和密碼進行驗證

            sClient.DeliveryMethod = SmtpDeliveryMethod.Network;//電子郵件是透過網絡傳送到SMTP伺服器

            MailMessage mmsg = new MailMessage();
            mmsg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
            mmsg.From = new MailAddress(address, displayname);//指定發件人的郵件地址和顯示名稱
            mmsg.Priority = MailPriority.High;//郵件的優先級

            //郵件內容部分
            mmsg.SubjectEncoding = Encoding.UTF8;//郵件主旨編碼
            mmsg.Subject = subject;//郵件主旨

            if (filepath != "")//如果文件路徑不為空,則添加附件信息
                mmsg.Attachments.Add(new Attachment(filepath));

            //收件人信息
            //對郵件地址進行處理    
            if (toEmail.Contains(";"))//如果郵件地址包含分號
            {
                string[] toAdrs = toEmail.Split(";".ToCharArray());
                foreach (string toAdr in toAdrs)
                {
                    mmsg.To.Add(toAdr);
                }
            }
            else
                mmsg.To.Add(toEmail);
            //副本收件人信息
            if (ccEmail != "")
            {
                if (ccEmail.Contains(";"))
                {
                    string[] ccAdrs = ccEmail.Split(";".ToCharArray());
                    foreach (string ccAdr in ccAdrs)
                    {
                        mmsg.CC.Add(ccAdr);
                    }
                }
                else
                    mmsg.CC.Add(ccEmail);
            }

            //秘密副本收件人信息
            if (bccEmail != "")
            {
                if (bccEmail.Contains(";"))
                {
                    string[] bccAdrs = bccEmail.Split(";".ToCharArray());
                    foreach (string bccAdr in bccAdrs)
                    {
                        mmsg.Bcc.Add(bccAdr);
                    }
                }
                else
                    mmsg.Bcc.Add(bccEmail);
            }

            //郵件內容
            mmsg.IsBodyHtml = true;  //支持HTML格式
            mmsg.BodyEncoding = Encoding.UTF8;//UTF8編碼
            mmsg.Body = body;  //郵件內容

            try
            {
                sClient.Send(mmsg);
            }
            catch (Exception ex)
            {
                errMsg = ex.Message + " | " + ex.InnerException;
            }
            return errMsg;
        }
    }
}

调用

View Code
        //使用公司內部服務器
        protected void Button1_Click(object sender, EventArgs e)
        {
            string sError = Common.SendMail(true, "", "", "10.9.1.1", 25, "your company email host address", "XX部xx組", "功能測試", "", "123@sina.com", "", "", "Welcome!");
            if (sError == "")
                ClientScript.RegisterStartupScript(this.GetType(), "tips1", "alert('發送成功!');", true);
        }

        //使用網易126郵件服務器
        protected void Button2_Click(object sender, EventArgs e)
        {
            string sError = Common.SendMail(false, "xxx@126.com", "your password", "smtp.126.com", 25, "xxx@126.com", "xxx的網易郵箱", "網易郵件主旨", "", "abc@163.com;bcd@qq.com", "", "", "網易歡迎你!");
            if (sError == "")
                ClientScript.RegisterStartupScript(this.GetType(), "tips2", "alert('發送成功!');", true);
        }

功能比较简单,介绍了.NET  System.Net.Mail  最基本的使用。
程序功能已在本机通过测试。