在 .NET Framework 2.0的System.Net.Mail命名空間中新增的MailMessage類和SmtpClient類使我們很容易發送Email,SmtpClient類提供了同步和非同步2種方式發送郵件.
同步發送郵件由於比較簡單,請看代碼
Code
MailMessage mm = new MailMessage ( );
//寄件者
mm.From = new MailAddress ( "aierong@126.com" , "aierong_126" );
//收件者(可以是多個)
mm.To.Add ( new MailAddress ( "aierong@qq.com" ) );
mm.To.Add ( new MailAddress ( "aierong@163.com" ) );
//抄送 (CC)(可以是多個)
mm.CC.Add ( new MailAddress ( "aierong@qq.com" ) );
mm.CC.Add ( new MailAddress ( "aierong@qq.com" ) );
//密件副本 (BCC)(可以是多個)
mm.Bcc.Add ( new MailAddress ( "114298@qq.com" ) );
mm.Bcc.Add ( new MailAddress ( "10249102@qq.com" ) );
//主題
mm.Subject = "郵件的主題1";
//郵件內文
mm.Body = "body";
//附件(可以是多個)
mm.Attachments.Add ( new Attachment ( @"D:\Access.zip" ) );
mm.Attachments.Add ( new Attachment ( @"D:\SetupReport.msi" ) );
SmtpClient sc = new SmtpClient ( );
//設定SMTP主機的名稱或IP地址
sc.Host = "smtp.126.com";
string User = "";
string PassWord = "";
//設定用於驗證寄件者身份的憑據
sc.Credentials = new System.Net.NetworkCredential ( User , PassWord );
sc.Send ( mm );
MessageBox.Show ( "ok" );
要是郵件容量比較大,可以設定SmtpClient.Timeout屬性(預設值為100 秒),以免逾時。
當然,我們還可以用設定檔來指定SmtpClient對象的預設主控件、連接埠和憑據值等屬性。請看下面配置
Code
<system.net>
<mailSettings>
<smtp>
<network password ="" userName ="" host ="smtp.126.com"/>
</smtp>
</mailSettings>
</system.net>
非同步發送郵件:
以上代碼是基於同步的發送方式,利用SmtpClient.SendAsync方法可以很方便實現非同步發送郵件
SendAsync方法描述如下:
public void SendAsync (
MailMessage message,
Object userToken
)
參數
message
包含要發送的訊息的 MailMessage。
userToken
一個使用者定義對象,此對象將被傳遞給完成非同步作業時所調用的方法。
代碼
Code
MailMessage mm = new MailMessage ( );
//寄件者
mm.From = new MailAddress ( "aierong@126.com" , "aierong_126" );
//收件者(可以是多個)
mm.To.Add ( new MailAddress ( "aierong@qq.com" ) );
//主題
mm.Subject = "郵件的主題1";
//郵件內文
mm.Body = "body";
//附件(可以是多個)
mm.Attachments.Add ( new Attachment ( @"D:\Access.zip" ) );
SmtpClient sc = new SmtpClient ( );
//SmtpClient.SendCompleted事件,在非同步電子郵件發送操作完成時調用
sc.SendCompleted += new SendCompletedEventHandler ( sc_SendCompleted );
//設定SMTP主機的名稱或IP地址
sc.Host = "smtp.126.com";
string User = "aierong";
string PassWord = "aie100le";
//設定用於驗證寄件者身份的憑據
sc.Credentials = new System.Net.NetworkCredential ( User , PassWord );
//非同步發送郵件
sc.SendAsync ( mm , "test message" );
void sc_SendCompleted ( object sender , AsyncCompletedEventArgs e )
{
if ( e.Error == null )
{
MessageBox.Show ( "發送成功" );
//顯示出來使用者定義對象"test message"
MessageBox.Show ( e.UserState.ToString() );
}
else
{
MessageBox.Show ( e.Error.Message );
}
}
http://aierong.cnblogs.com
Sql Server2005 Transact-SQL 新兵器學習總結之-總結
MS SQLDatabase Backup和恢複預存程序(加強版本)
sql server中分散式查詢隨筆(連結的伺服器(sp_addlinkedserver)和遠程登入映射(sp_addlinkedsrvlogin)使用小總結)
ASP.NET2.0國際化/本地化應用程式的實現總結(多語言,多文化頁面的實現)
WAP開發資料站(最新更新)
自訂格式字串隨筆 (IFormattable,IFormatProvider,ICustomFormatter三介面的實現)
Mcad學習筆記之非同步編程(AsyncCallback 委託,IAsyncResult介面,BeginInvoke方法,EndInvoke方法的使用小總結)
Mcad學習筆記之通過反射調用類的方法,屬性,欄位,索引器(2種方法)
Mcad學習筆記之序列化(2進位和Soap序列化)
Mcad學習筆記之委託再理解(delegate的構造器,BeginInvoke,EndInvoke,Invoke4個方法的探討)
WinForm開發,表單顯示和表單傳值相關知識總結
Mcad學習筆記之Microsoft Windows服務
copy某目錄下的所有的目錄和檔案到目的目錄(目錄數據備份)
ASP.NET狀態管理之一(概括篇)