今天在網上搜集了一些使用.net發送郵件的資料,現在拿出來和大家分享一下!在.net中,.NET自帶了發送郵件的功能,在VS2003中該功能已經封裝進.NET Framework的System.Web.Mail的命名空間裡了,在VS2005下更多的是利用System.Net.Mail命名空間了。
使用這個命名空間下的類,就可以很容易的構建一個發送郵件的程序,所需要的僅僅是在Windows中架構好SMTP服務器。
System.Web.Mail命名空間:
這個命名控件下包含了以下的對象和三個屬性:
包含的對象:
MailAttachment:與郵件附件有關的對象類
MailMessage :郵件主體
SmtpMail :負責發送郵件的SMTP協議。
屬性列表:
MailEncoding :郵件的編碼(Base64,UUEncode)
MailFormat :郵件的格式(Html超文本格式,Text純文本格式)
MailPriority :郵件優先級(High, Medium, Low)
構建MailMessage對象:
MailMessage對象是郵件的承載主體,通常可以先構建好MailMessage對象,然後設置它的屬性的方式來構建郵件程序,下面列出了的是一些常用的屬性:
Attachments :郵件附件
Bcc :暗送地址
Body :郵件主體
BodyFormat :郵件格式(Html,text)
Cc :抄送地址
From :發信人地址
Priority :郵件優先級(High, Medium,Low)
Subject :郵件主題
To :接收人地址
UrlContentBase :在Html格式郵件中的URL編碼方式
UrlContentLocation:郵件信息的優先級(High, Medium,Low)
使用SMTPMail發送郵件
構建好MailMessage對象之後,還需要使用另外一個對象-SMTPMail-來發送郵件,SMTPMAIL有一個很重要的方法:Send,該方法有兩個不同用法,其中一個可以僅僅發送整個的MailMessage對象:
SmtpMail.Send(myEmailObject);
另外一個允許你分別指定發送者,收郵件地址,郵件主題,郵件主題,然後再發送出去:
SmtpMail.Send(strFrom, strTo, strSubject, strBody);
例子程序:
來看看下面這一個完整的例子,在這個例子中,使用System.Web.Mail命名空間,我們先創建一個MailMessage對象,然後設置部分屬性,最後使用SmtpMail對象把它發送出去:
protected void Page_Load(object sender, EventArgs e)
{
// CREATE A MAIL MESSAGE
System.Web.Mail.MailMessage myEmail = new System.Web.Mail.MailMessage();
// SET MESSAGE PARAMETERS
myEmail.From = "[email protected]";
myEmail.To = "[email protected]";
myEmail.Subject = "Product Availability Notice";
myEmail.BodyFormat = System.Web.Mail.MailFormat.Html;
myEmail.Body = "The sunglasses you expressed interest in are now in stock.";
//SEND THE MESSAGE
System.Web.Mail.SmtpMail.Send(myEmail);
//UPDATE STATUS
lblMailStatus.Text = "Mail successfully sent.";
}
<Html>
<body>
<ASP:Label id="lblMailStatus" runat="server" />
</body>
</Html>
System.Net.Mail命名空間:
這個命名控件下包含了以下主要對象和主要屬性:
包含的對象:
MailAddress:表示電子郵件發件人或收件人的地址
Attachment :表示電子郵件的附件
MailAddressCollection :存儲與電子郵件關聯的電子郵件地址
MailMessage :表示可以使用 SmtpClIEnt 類發送的電子郵件
SmtpClIEnt :允許應用程序使用簡單郵件傳輸協議 (SMTP) 來發送電子郵件。
屬性列表:
DeliveryNotificationOptions:描述電子郵件的傳送通知選項
MailPriority :指定 MailMessage 的優先級
SmtpAccess :指定允許的簡單郵件傳輸協議 (SMTP) 服務器訪問級別
SmtpDeliveryMethod:指定如何發送電子郵件
SmtpStatusCode:指定使用 SmtpClIEnt 類發送電子郵件的結果
構建MailMessage對象:
MailMessage對象是郵件的承載主體,通常可以先構建好MailMessage對象,然後設置它的屬性的方式來構建郵件程序,下面列出了的是一些常用的屬性:
Attachments :郵件附件
Bcc :暗送地址
Body :郵件主體
Cc :抄送地址
From :發信人地址
Subject :郵件主題
To :接收人地址
使用SmtpClIEnt發送郵件
構建好MailMessage對象之後,還需要使用另外一個對象-SmtpClient-來發送郵件,SmtpClIEnt有一個很重要的方法:Send,可以發送整個的MailMessage對象:
SmtpClIEnt.Send(MailMessage);
在這個例子中,使用System.Net.Mail命名空間
static string strHost = String.Empty;
static string strAccount = String.Empty;
static string strPwd = String.Empty;
static string strFrom = String.Empty;
/// <summary>
/// 發送郵件
/// </summary>
/// <param name="to">接收方郵件地址</param>
/// <param name="title">郵件標題</param>
/// <param name="content">郵件正文內容</param>
public static bool sendmail(string to, string title, string content)
{
strHost = "smtp.webjx.com"; //STMP服務器地址
strAccount = "[email protected]"; //SMTP服務帳號
strPwd = "passWord"; //SMTP服務密碼
strFrom = "[email protected]"; //發送方郵件地址
SmtpClient _smtpClient = new SmtpClIEnt();
_smtpClIEnt.DeliveryMethod = SmtpDeliveryMethod.Network;//指定電子郵件發送方式
_smtpClIEnt.Host = strHost; ;//指定SMTP服務器
_smtpClIEnt.Credentials = new System.Net.NetworkCredential(strAccount, strPwd);//用戶名和密碼
MailMessage _mailMessage = new MailMessage(strFrom, to);
_mailMessage.Subject = title;//主題
_mailMessage.Body = content;//內容
_mailMessage.BodyEncoding = System.Text.Encoding.UTF8;//正文編碼
_mailMessage.IsBodyHtml = true;//設置為Html格式
_mailMessage.Priority = MailPriority.High;//優先級
try
{
_smtpClIEnt.Send(_mailMessage);
return true;
}
catch
{
return false;
}
}