Microsoft .NET Framework 2.0實現發送郵件(Email)總結

來源:互聯網
上載者:User

在 .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狀態管理之一(概括篇)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.