日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

System.Net.Mail

 趨明 2012-03-19
System.Net.Mail命名空間是在.NET Framework中新增的,該命名空間提供了發(fā)送電子郵件的功能。System.Net.Mail命名空間包含用于將電子郵件發(fā)送到SMTP服務(wù)器的類,這些類需要結(jié)合Microsoft STMP Server一起使用。

概述

System.Net.Mail命名空間下有StmpClient類用于發(fā)送郵件,可以完全替代SmtpMail類。利用SmtpClient類的Send方法可以完成發(fā)送電子郵件的傳輸,也可以用SendAsync方法進(jìn)行異步發(fā)送,后者發(fā)送完成后產(chǎn)生一個SendCompleted事件來通知發(fā)送結(jié)束。Send方法可以接受MailMessage類的對象作為參數(shù)。通過MailMessage類可以設(shè)置郵件更多的內(nèi)容和格式,例如,為Attachment類設(shè)置添加附件的參數(shù)。

System.Net.Mail命名空間的類組成

SmtpClient類與SMTP結(jié)合在一起,通過MailMessage類、MailAddress類、Attachment類來豐富電子郵件的內(nèi)容和設(shè)置。下面展示了用戶通過System.Net.Mail命名空間下的類結(jié)合SMTP發(fā)送電子郵件的過程。

 

管理SMTP的類:SmtpClient類

SmtpClient類封裝了將電子郵件發(fā)送到SMTP服務(wù)器的方法和屬性。

SmtpCleint類用于讓應(yīng)用程序向Smtp服務(wù)器發(fā)送電子郵件,可以通過同步或者異步的方法發(fā)送電子郵件。通過結(jié)合MailMessage類使用,還可以設(shè)置郵件的格式、添加抄送人、添加附件等。

語法定義:

SmtpClient類的語法定義如下:

public class SmtpClient

下面的代碼演示如何創(chuàng)建一個SmtpClient的實(shí)例

SmtpClient client = new SmtpClient("smpt.Sina.com"); //直接通過構(gòu)造函數(shù)設(shè)置SMTP主機(jī)服務(wù)器

或:

SmtpClient client = new SmtpClient();

Client.Host = "smtp.Sina.com"; // 通過Host屬性來設(shè)置SMTP主機(jī)服務(wù)器

方法詳解:

SmtpClient類主要使用SMTP來同步或異步地發(fā)送電子郵件。其中最常用的方法及其說明如下:

發(fā)送電子郵件時,只要簡單地調(diào)用Send方法就可以了,其中Send方法有兩個重載:

public void Send(MailMessage message)   其中,參數(shù)message是MailMessage類的一個實(shí)例。

public void Send(string from ,string recipients,string subject,string body)  ,第二個有四個參數(shù),其代表意義如下:

from : 包含郵件發(fā)件人的地址信息。

recipients :包含郵件收件人的地址信息。

subject :包含郵件的主題行。

body :包含郵件的正文。

下面的代碼演示了如何使用Send函數(shù)發(fā)送電子郵件:

static void Main(string[] args)

{

     SmtpClient client = new SmtpClient();

     //此處省略了client屬性設(shè)置代碼

     client.Send("FromMailBox@Sina.com", "ToMailBox@Sina.com","電子郵件示例","您好,收到了嗎?");

     Console.WriteLine("郵件已經(jīng)成功發(fā)送到{0}","ToMailBox@Sina.com");

}

技巧:如果不想主線程等待傳輸電子郵件完成后再執(zhí)行,可以使用異步SendAsync方法。SendAsync操作完成時會引發(fā)SendCompleted事件。

 

管理電子郵件內(nèi)容的類:MailMessage類

     MailMessage類的實(shí)例表示一個電子郵件的所有內(nèi)容,并用SmtpClient類來傳輸?shù)絊MTP服務(wù)器。若要指定電子郵件的發(fā)件人、收件人和內(nèi)容,可以是使用MailMessage類的相關(guān)屬性。

     MailMessage類是.NET Framework中管理郵件的專用類,表示可以使用SmtpClient類發(fā)送的電子郵件。該類提供了豐富的屬性來創(chuàng)建電子郵件,例如可以用Attachments屬性添加附件。當(dāng)一個廣告設(shè)計(jì)師要以網(wǎng)頁的形式向客戶發(fā)送某產(chǎn)品的廣告,還需要抄送自己的上司時,則可以設(shè)置MailMessage類的IsBodyHtml屬性為true,并在CC屬性中添加其上司的電子郵箱地址來同時發(fā)送。

語法定義
public class MailMessage : IDisposable

該類的構(gòu)造函數(shù)有三個重載。下面的代碼演示如何創(chuàng)建一個MailMessage類的實(shí)例。

MailMessage message = new MailMessage();  //無參數(shù)

//通過構(gòu)造函數(shù)設(shè)置SMTP主機(jī)服務(wù)器

MailMessage message = new MailMessage("smtp.sina.com");

//通過構(gòu)造函數(shù)設(shè)置SMTP主機(jī)服務(wù)器和端口

MailMessage message = new MailMessage("smtp.sina.com",25);

屬性詳解

MailMessage 類除了繼承父類的方法外,沒有提供其他方法。但其提供了豐富的屬性如下:

屬性:

AlternateViews : 為了防止有些電子郵件閱讀程序無法顯示HTML內(nèi)容,該屬性存儲了郵件正文的替代形式的附件集合。

Attachments : 包含了此電子郵件的所有附件

Bcc : 包含此電子郵件密件抄送的收件人地址

Body: 郵件的正文

BodyEncoding : 郵件正文編碼

CC :包含了所有此電子郵件抄送的收件人地址

DeliveryNotificationOptions : DeliveryNotificaionOptions枚舉類型,確定此電子郵件的發(fā)送通知

From : 電子郵件發(fā)信人的地址

Headers : 電子郵件的標(biāo)頭

IsBodyHtml : Boolean值,設(shè)置郵件正文是文本還是Html格式,默認(rèn)為文本

Priority : 電子郵件的優(yōu)先級

ReplyTo : 電子郵件的回復(fù)地址,一般與發(fā)信人地址相同

Sender : 電子郵件發(fā)件人地址

Subject : 電子郵件的主題

SubjectEncoding : 電子郵件的主題內(nèi)容的編碼

To : 包含所有電子郵件的收件人的地址

 

例子: 使用MailMessage類設(shè)置電子郵件的內(nèi)容

  1. static void Main(string[] args)  
  2.   
  3. {  
  4.   
  5.     SmptClient client = new SmptClient();  
  6.   
  7.     //此處省略SmtpClient類的其他屬性設(shè)置   
  8.   
  9.     MailMessage message = new MailMessage();  
  10.   
  11.     //添加密件抄送人,可以添加多個   
  12.   
  13.     message.Bcc.Add("First@domian.com");  
  14.   
  15.     message.Bcc.Add("Second@domain.com");  
  16.   
  17.     message.Body = "這是郵件的正文部分";  
  18.   
  19.     //設(shè)置正文的編碼形式,這里的設(shè)置為取系統(tǒng)默認(rèn)編碼   
  20.   
  21.     message.BodyEncoding = System.Text.Encoding.Default;  
  22.   
  23.     //添加一般抄送人,可以添加多個   
  24.   
  25.     message.Bcc.Add(“First@domain.com”);  
  26.   
  27.     message.Bcc.Add(Second@domain.com);  
  28.   
  29.     //郵件傳送通知選項(xiàng)   
  30.   
  31.     message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;  
  32.   
  33.     message.From  = new MailAddress(FromMailBox@sina.com");  
  34.   
  35.      message.IsBodyHtml = false;  
  36.   
  37.     //設(shè)置郵件的優(yōu)先級為正常   
  38.   
  39.      message.Priority = MailPriority.Normal;  
  40.   
  41.      message.ReplyTo= new MailAddress("FromMailBox@sina.com");  
  42.   
  43.      message.Sender = new MailAddress("FromMailBox@sina.com");  
  44.   
  45.      message.Subject = "這是郵件的主題":  
  46.   
  47.     //設(shè)置主題的編碼形式,這里的設(shè)置為取系統(tǒng)默認(rèn)編碼   
  48.   
  49.      message.SubjectEncoding = System.Text.Encoding.Default;  
  50.   
  51.      Client.Send(message) ;   //發(fā)送成功   
  52.   
  53.      Console.WriteLine("發(fā)送成功!");  
  54.   
  55. }  

在上面代碼中,用到了DeliveryNotificationOptions枚舉類型。該類型有5個成員值,具體代表意義如下:

Delay : 通知傳送是否延遲

Never : 從不通知

None : 沒有通知

OnFailure : 通知傳送是否失敗

OnSuccess : 通知傳送是否成功

 

管理電子郵件地址類: MailAddress類

MailAddress 類表示電子郵件的地址。該類結(jié)合SmtpClient類或MailAddress類使用,其實(shí)例存儲了電子郵件的地址信息。MailAddress類是.NET Framwork新增的類,可以設(shè)置電子郵件發(fā)件人或收件人的地址。通過該類的屬性可以獲取電子郵件地址的聯(lián)系人的詳細(xì)信息。例如電子郵件中顯示聯(lián)系人的名字和SMPT服務(wù)器上的用戶名。

語法定義

該類的構(gòu)造函數(shù)有三個重載,下面的代碼演示了如何創(chuàng)建其實(shí)例:

//指定電子郵件的地址構(gòu)造一個新實(shí)例

MailAddress fromMailBox = new MailAddress("FromMailBox@Sina.com");

//指定電子郵件的地址和顯示名稱構(gòu)造一個新實(shí)例

MailAddress fromMailBox = new MailAddress("FromMailBox@Sina.com","顯示名稱");

//指定電子郵件的地址、顯示名稱和顯示名稱的編碼構(gòu)造一個新實(shí)例

MailAddress fromMailBox = new MailAddress("FromMailBox@Sina.com","顯示名稱",System.Text.Encoding.Default);

屬性詳解

Address: 獲取電子郵件的地址

DisplayName : 獲取在電子郵件顯示的名稱

Host : 獲取服務(wù)器名稱,也就是在電子郵件地址@符號后的服務(wù)器名稱

User : 獲取用戶名稱,也就是在電子郵件地址@符號前的用戶名

  1. static void Main(string[] args)  
  2.   
  3. {  
  4.   
  5.     MailAddress  FromMailBox = new MailMessage("FromMailBox@sina.com","張三");  
  6.   
  7.    Console.WriteLine("電子郵件地址是:{0} 顯示名:{1} 服務(wù)器名:{2}  用戶名:{3}",  
  8.   
  9.     FromMailBox.Address,FromMailBox.DisplayName,FromMailBox.Host,FromMailBox.User):  
  10.   
  11. }  

輸出結(jié)果: 電子郵件地址是:FromMailBox@sina.com  顯示名:張三 服務(wù)器名:sina.com 用戶名:FromMailBox

 

表示電子郵件附件的類: Attachment類

Attachment類表示電子郵件的附件集合。該類結(jié)合了MailMessage類一起使用,可以為電子郵件添加附件。該類可以使用字符類型和數(shù)據(jù)流(Stream)的形式創(chuàng)建附件。支持?jǐn)?shù)據(jù)流的形式就意味著能用任何的文件格式作為附件,例如TXT格式或DOC格式。

語法定義

public class Attachment: AttachmentBase

該類的構(gòu)造函數(shù)有6個重載,下面演示創(chuàng)建一個Attachment類的實(shí)例的兩種常用方式。

Attachment item = new Attachment(@"c:\附件.txt",MediaTypeNames.Text.Plain);

以上這種情況,第一個參數(shù)為附件的路徑,第二個參數(shù)附件的MIME內(nèi)容標(biāo)頭信息,簡單來說就是表明文件的格式。

System.IO.FileInfo file = new System.IO.FileInfo(@"c:\附件.txt");

System.IO.FileStream stream = file.OpenRead();

Attachment item = new Attachment(stream,MediaTypeNames.Text.Plain);

第二種情況,第一個參數(shù)以數(shù)據(jù)流的方式傳入。數(shù)據(jù)流可以從文件中讀出,也可以從數(shù)據(jù)庫中讀出。第二個參數(shù)跟上一種情況相同。

方法詳解

除了通過new關(guān)鍵字實(shí)例化一個Attachment類對象外,還可以用Attachment類提供的靜態(tài)方法CreateAttachmentFromString來創(chuàng)建該類的一個實(shí)例。下面的代碼演示了如何使用CreateAttachmentFromString方法。

Attachment item = Attachment.CreateAttachmentFromString(@"c:\附件.txt",MediaTypeNames.Text.Plain);

 

屬性詳解

Attachment類通過一些屬性來訪問附件的內(nèi)容,其中幾個重要的屬性及其說明如下:

ContentDisposition : 附件的MIME內(nèi)容處置

ContentStream : 附件的數(shù)據(jù)流

ContentType : 附件內(nèi)容的類型

Name :  附件內(nèi)容的類型名稱

下面用例子說明Attachment類屬性的用法:

static void Main(string[] args)

{

     Attachment content  = new Attachment(@"c:\附件.txt",MediaTypeNames.Text.Plain);

    ContentDisposition dispositioin = content.ContentDispositioin;

     disposition.FileName= “文本附件”;

     Console.WriteLine("附件內(nèi)容名稱:{0}   類型名稱:{1}     附件文件:{2}",content.Name,content.ContentType.MediaType,content.ContentDisposition.FileName);

}

上面的代碼輸出結(jié)果為: 附件內(nèi)容名稱:附件.txt  類型名稱:text/plain     附件文件:文本附件

典型應(yīng)用:使用Attahment類添加電子郵件的附件

下面演示如何使用Attachment類為電子郵件添加一個文本附件,代碼如下:

  1.  static void Main(string[] args)  
  2.   
  3. {  
  4.   
  5.    SmtpClient client = new SmtpClient();  
  6.   
  7.    //此處省略SmtpClient的其他屬性設(shè)置   
  8.   
  9.     MailMessage message = new MailMessage();  
  10.   
  11.     message.Body = "這是郵件的正文部分";  
  12.   
  13.     //設(shè)置正文的編碼形式,這里的設(shè)置為系統(tǒng)默認(rèn)編碼   
  14.   
  15.      message.BodyEncoding = System.Text.Encoding.Default;  
  16.   
  17.     message.From = new MailAddress("FromMailBox@sina.com");  
  18.   
  19.     message.IsBodyHtml = false;  
  20.   
  21.     message.ReplyTo = new MailAddress("FromMailBox@sina.com");  
  22.   
  23.      message.Sender = new MailAddress("FromMailBox@sina.com");  
  24.   
  25.      message.Subject = "這是郵件的主題";  
  26.   
  27.      //附件添加   
  28.   
  29.      Attachment content = new Attachment(@"c:\附件.txt",MediaTypeNames.Text.Plain);  
  30.   
  31.      message.Attachments.add(content);  
  32.   
  33.       //設(shè)置主題的編碼形式,這里的設(shè)置為系統(tǒng)默認(rèn)編碼   
  34.   
  35.      message.SubjectEncoding = System.Text.Encoding.Default;  
  36.   
  37.      client.Send(message);  //發(fā)送郵件   
  38.   
  39.      Console.WriteLine("發(fā)送成功!");  
  40.   
  41. }  

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多