ASP.NET 2.0中发送电子邮件

文章来自http://www.cnblogs.com/freshman0216/archive/2008/06/05/1213984.html

 ASP.NET 2.0 中发送电子邮件变得非常简单。发送电子邮件的类库主要在命名空间System.Net.Mail中,在这个命名空间中有两个核心类是:
      · MailMessage:描述一个电子邮件消息;它拥有From,To,Subject,Body等属性;
      · SmtpClient:把一个指定的MailMessage实例发送到一个指定的SMTP服务器。

      发送电子邮件的一般步骤是:
      1.创建一个MailMessage对象;
      2.赋给它的From,To,Subject,Body等属性;
      3.创建一个SmtpClient类实例;
      4.指定关于使用该SMTP服务器的细节(如果它们没有在Web.config中指定);
      5.经由SmtpClient对象的Send方法发送该MailMessage。
      
      下面的代码演示了发送电子邮件的过程:

复制代码
 1 string mailServerName = "smtp.126.com";  //发送邮件的SMTP服务器
 2 string mailFrom = "sender0624@126.com";   //发件人邮箱(用126的邮件服务器,就必须用126邮箱的用户名)
 3 string mailTo = "supremezone@126.com";   //收件人邮箱
 4 string subject = "用代码方式发送邮件";//邮件主题
 5 string body = "这里是邮件正文了";  //邮件正文
 6 
 7 using (MailMessage message = new MailMessage(mailFrom, mailTo, subject, body))
 8 {
 9     //SmtpClient是发送邮件的主体,这个构造函数是告知SmtpClient发送邮件时使用哪个SMTP服务器
10     SmtpClient mailClient = new SmtpClient(mailServerName);
11     //将认证实例赋予mailClient,也就是访问SMTP服务器的用户名和密码
12     mailClient.Credentials = new NetworkCredential("sender0624", "111111");
13     //最终的发送方法
14     mailClient.Send(message);
15 }
View Code
复制代码

 上述方法是通过Code方式发送邮件的,而在Asp.Net 2.0中Framework考虑更多的是配置式,也就是通过config方式来进行应用程序的控制,减少程序参数硬编码,这个配置节属于<system.net>节下的。
        首先在Web.config文件中增加如下配置节:

复制代码
 1 <system.net>
 2     <!--如果是第三方smtp服务器,需要指定userName 和 password,并根据host指定发件人邮件地址from
 3         测试发现from值必须是userName值加上指定的smpt服务器才行,而且是必须指定的
 4         如果是本机smtp服务器,只需指定defaultCredentials="true"即可-->
 5     <mailSettings>
 6       <smtp deliveryMethod="Network" from ="sender0624@126.com" >
 7         <network host="smtp.126.com" port="25" userName="sender0624" password="111111/>
 8       </smtp>
 9     </mailSettings>
10   </system.net>
View Code
复制代码

接下来是程序代码,你会发现配置方式较Code方式代码是多么简洁,而且避免了硬编码,Smtp信息是从配置文件中读取的。

复制代码
1 using (MailMessage message = new MailMessage())
2 {
3     message.To.Add(new MailAddress("supremezone@126.com")); //收件人邮箱
4     message.Subject = "通过配置文件设置发送邮件";//邮件主题
5     message.Body = "这里是邮件正文了";  //邮件正文
6 
7     SmtpClient mailClient = new SmtpClient();
8     mailClient.Send(message);
9 }
View Code
复制代码
 相比Code方式,我们发现配置方式代码中省去了发件人邮箱,SMTP服务器和SMTP服务器认证的Credentials,代码变得相当简洁,更为重要的是这些信息可以在Web.config文件中配置,这就大大增加了程序的灵活性,这是推荐采用的方式。需要说明的一点,示例中的邮箱用户名和密码都是真实的,理论上运行该示例程序是可以正常发送邮件的,但发送邮件时程序会抛出异常“邮箱不可用。 服务器响应为: Óû§±»Ëø¶¨ ”,但如果Credentials认证信息换成我另一个126邮箱,却能正常发送邮件了,一直没能找到原因所在,将对SmtpClient发送邮件的稳定性做进一步的研究,也希望能得到大家的指导。
        2013-01-22补充:
        发送邮件出现”在邮件标头中找到无效的字符“异常,看下计算机名称是否含中文,这个貌似是微软的bug,解决方法是不要含中文。

相关文章:

http://www.cnblogs.com/pcmax/archive/2007/08/06/845430.html

http://www.cnblogs.com/xxz0618/archive/2006/11/09/555378.html

 

posted on   华山青竹  阅读(173)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示