使用System.Net.Mail實現郵件群發

iDotNetSpace發表於2009-03-09
本文介紹了使用名稱空間System.Net.Mail下的MailMessageSmtpClient實現了郵件傳送。

using System;

using System.Collections;

using System.Text;

using System.Net;

using System.Net.Mail;

namespace NetMailSend

{

    class Programe

    {

        public static void Main(string[] args)

        {

            //mail message

            MailMessage myMail = new MailMessage();

            myMail.From = new MailAddress("test@gmail.com");

            myMail.To.Add(new MailAddress("test@gmail.com"));

            myMail.Subject = "Test";

            myMail.SubjectEncoding = Encoding.UTF8;

            myMail.Body = "You are successed.";

            myMail.BodyEncoding = Encoding.UTF8;

            myMail.IsBodyHtml = false;

            myMail.Priority = MailPriority.High;

            myMail.CC.Add(new MailAddress("test@gmail.com"));

            myMail.Bcc.Add(new MailAddress("test@gmail.com"));

            //smtp client

            SmtpClient sender = new SmtpClient();

            sender.Host = "smtp.gmail.com";

            sender.Port = 587;

            sender.Credentials = new NetworkCredential("test@gmail.com", "test");

            sender.DeliveryMethod = SmtpDeliveryMethod.Network;

            sender.EnableSsl = true;

            try

            {

                sender.Send(myMail);

                Console.WriteLine("Success");

            }

            catch (Exception e)

            {

                Console.WriteLine("Failed.Exception:{0}", e.Message);

            }

            Console.Write("Press any key to quit...");

            Console.ReadKey();

        }

    }

}

在這種實現中要注意這樣幾個問題:

  1.  System.Net.Mail.NET 2.0以後的版本中被推薦使用的方法,它解決了一些編碼問題和一些安全驗證的問題,並且對MailMessage類重寫,提供了更多的函式,使得建立MailMessage更加便利。
  2.  System.Net.Mail.MailMessage中,加入SubjectEncoding屬性,而且對於To, Cc, Bcc都加入了一些域下的方法,使得可以更便利的實現郵件群發。而且使用了更加物件導向的MailAddress類的物件來表明郵件地址。
  3. System.Net.Mail中加入SmtpClient類,該類包含了諸如本應用中的一些方法和屬性,可以對連結進行安全連結的標記等等
  4. 值得注意的是,一般來講SMTP(Simple Message Transfer Protocol)使用的埠是25,這也是多數郵件服務期提供的埠,但是gmail卻不一樣,gmail的最新埠是587,而不是先前的465
  5. Gmail的伺服器是要求安全連結的,所以一定要指定Sender.EnableSsl true
  6. 此外SmtpClient物件中有一個非常重要的方法,要介紹一下,就是SendAsync(), 這個方法已經被過載過了,public void SendAsync(MailMessage message, object userToken)要求使用MailMessage作為傳送物件,並且勇userToken指定非同步操作時呼叫的方法。public void SendAsync(string from, string recipients, string subject, string body, object userToken) 可以不用建立MailMessage物件直接傳送郵件,userToken與上一個函式相同,public void SendAsyncCancel()用來取消非同步操作以傳送郵件。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-564906/,如需轉載,請註明出處,否則將追究法律責任。

相關文章