對於.NET而言,從2.0開始,發郵件已是一件很是easy 的事了。下面我給出一個用C#羣發郵件的實例,作了比較詳細的註解,但願對有須要的朋友有所help。服務器
// 引入命名空間
using System.Net;
using System.Net.Mail;ide
SmtpClient smtp = new SmtpClient(); //實例化一個SmtpClient
smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //將smtp的出站方式設爲 Network
smtp.EnableSsl = false;//smtp服務器是否啓用SSL加密
smtp.Host = "smtp.163.com"; //指定 smtp 服務器地址
smtp.Port = 25; //指定 smtp 服務器的端口,默認是25,若是採用默認端口,可省去
//若是你的SMTP服務器不須要身份認證,則使用下面的方式,不過,目前基本沒有不須要認證的了
smtp.UseDefaultCredentials = true;
//若是須要認證,則用下面的方式
smtp.Credentials = new NetworkCredential("郵箱賬號@163.com", "郵箱密碼");
MailMessage mm = new MailMessage(); //實例化一個郵件類
mm.Priority = MailPriority.High; //郵件的優先級,分爲 Low, Normal, High,一般用 Normal便可
mm.From = new MailAddress("郵箱賬號@163.com", "真有意思", Encoding.GetEncoding(936));
//收件方看到的郵件來源;
//第一個參數是發信人郵件地址
//第二參數是發信人顯示的名稱
//第三個參數是 第二個參數所使用的編碼,若是指定不正確,則對方收到後顯示亂碼
//936是簡體中文的codepage值
注:上面的郵件來源,必定要和你登陸郵箱的賬號一致,不然會認證失敗post
mm.ReplyTo = new MailAddress("test_box@gmail.com", "個人接收郵箱", Encoding.GetEncoding(936));
//ReplyTo 表示對方回覆郵件時默認的接收地址,即:你用一個郵箱發信,但卻用另外一個來收信
//上面後兩個參數的意義, 同 From 的意義
mm.CC.Add("a@163.com,b@163.com,c@163.com");
//郵件的抄送者,支持羣發,多個郵件地址之間用 半角逗號 分開
//固然也能夠用全地址,以下:
mm.CC.Add(new MailAddress("a@163.com", "抄送者A", Encoding.GetEncoding(936)));
mm.CC.Add(new MailAddress("b@163.com", "抄送者B", Encoding.GetEncoding(936)));
mm.CC.Add(new MailAddress("c@163.com", "抄送者C", Encoding.GetEncoding(936)));
mm.Bcc.Add("d@163.com,e@163.com");
//郵件的密送者,支持羣發,多個郵件地址之間用 半角逗號 分開
//固然也能夠用全地址,以下:
mm.CC.Add(new MailAddress("d@163.com", "密送者D", Encoding.GetEncoding(936)));
mm.CC.Add(new MailAddress("e@163.com", "密送者E", Encoding.GetEncoding(936)));
mm.Sender = new MailAddress("xxx@xxx.com", "郵件發送者", Encoding.GetEncoding(936));
//能夠任意設置,此信息包含在郵件頭中,但並不會驗證有效性,也不會顯示給收件人
//說實話,我不知道有啥實際做用,你們可不理會,也可不寫此項
mm.To.Add("g@163.com,h@163.com");
//郵件的接收者,支持羣發,多個地址之間用 半角逗號 分開
//固然也能夠用全地址添加
mm.To.Add(new MailAddress("g@163.com", "接收者g", Encoding.GetEncoding(936)));
mm.To.Add(new MailAddress("h@163.com", "接收者h", Encoding.GetEncoding(936)));
mm.Subject = "這是郵件標題"; //郵件標題
mm.SubjectEncoding = Encoding.GetEncoding(936);
// 這裏很是重要,若是你的郵件標題包含中文,這裏必定要指定,不然對方收到的極有多是亂碼。
// 936是簡體中文的pagecode,若是是英文標題,這句能夠忽略不用
mm.IsBodyHtml = true; //郵件正文是不是HTML格式
mm.BodyEncoding = Encoding.GetEncoding(936);
//郵件正文的編碼, 設置不正確, 接收者會收到亂碼
mm.Body = "<font color="red">郵件測試,呵呵</font>";
//郵件正文
mm.Attachments.Add( new Attachment( @"d:a.doc", System.Net.Mime.MediaTypeNames.Application.Rtf ) );
//添加附件,第二個參數,表示附件的文件類型,能夠不用指定
//能夠添加多個附件
mm.Attachments.Add( new Attachment( @"d:b.doc") );
smtp.Send( mm ); //發送郵件,若是不返回異常, 則大功告成了。