Microsoft .NET Framework 2.0实现发送邮件(Email)总结

编辑器加载中...在 .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 异步发送邮件: 以上代码是基于同步的发送方式,利用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 SQL数据库备份和恢复存储过程(加强版本) 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状态管理之一(概括篇) 我的系列文章 A.Sql Server2005 Transact-SQL 新兵器学习 B.MCAD学习 C.代码阅读总结 D.ASP.NET状态管理 E.DB(数据库) F.WAP G.WinForm H.Flex 我的好文推荐 FlexAir开源版-全球免费多人视频聊天室,免费网络远程多人视频会议系统((Flex,Fms3联合开发)) Sql Server2005 Transact-SQL 新兵器学习总结之-总结 MS SQL数据库备份和恢复存储过程(加强版本) 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个方法的探讨) ASP.NET状态管理之一(概括篇) Flex,Fms学习笔记 希望上面提到的知识对您有所提示,同时欢迎交流和指正 作者:aierong 出处:http://www.cnblogs.com/aierong 贴子以"现状"提供且没有任何担保,同时也没有授予任何权利! 本文版权归作者所有,欢迎转载! 原创技术文章和心得,转载注明出处!这也是对原创者的尊重!

原文地址:https://www.cnblogs.com/Leo_wl/p/2301584.html