ASP.NET 2.0中发送电子邮件

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。
      
      下面的代码演示了发送电子邮件的过程:

string mailServerName = "smtp.126.com";  //发送邮件的SMTP服务器
string mailFrom = "sender0624@126.com";   //发件人邮箱(用126的邮件服务器,就必须用126邮箱的用户名)
string mailTo = "supremezone@126.com";   //收件人邮箱
string subject = "用代码方式发送邮件";//邮件主题
string body = "这里是邮件正文了";  //邮件正文

using (MailMessage message = new MailMessage(mailFrom, mailTo, subject, body))
{
    //SmtpClient是发送邮件的主体,这个构造函数是告知SmtpClient发送邮件时使用哪个SMTP服务器
    SmtpClient mailClient = new SmtpClient(mailServerName);
    //将认证实例赋予mailClient,也就是访问SMTP服务器的用户名和密码
    mailClient.Credentials = new NetworkCredential("sender0624", "111111");
    //最终的发送方法
    mailClient.Send(message);
}

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

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

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

using (MailMessage message = new MailMessage())
{
    message.To.Add(new MailAddress("supremezone@126.com")); //收件人邮箱
    message.Subject = "通过配置文件设置发送邮件";//邮件主题
    message.Body = "这里是邮件正文了";  //邮件正文

    SmtpClient mailClient = new SmtpClient();
    mailClient.Send(message);
}

相比Code方式,我们发现配置方式代码中省去了发件人邮箱,SMTP服务器和SMTP服务器认证的Credentials,代码变得相当简洁,更为重要的是这些信息可以在Web.config文件中配置,这就大大增加了程序的灵活性,这是推荐采用的方式。需要说明的一点,示例中的邮箱用户名和密码都是真实的,理论上运行该示例程序是可以正常发送邮件的,但发送邮件时程序会抛出异常“邮箱不可用。 服务器响应为: Óû§±»Ëø¶¨ ”,但如果Credentials认证信息换成我另一个126邮箱,却能正常发送邮件了,一直没能找到原因所在,将对SmtpClient发送邮件的稳定性做进一步的研究,也希望能得到大家的指导。

2013-01-22补充:
发送邮件出现”在邮件标头中找到无效的字符“异常,看下计算机名称是否含中文,这个貌似是微软的bug,解决方法是不要含中文。

参考资料:ASP.NET 2.0中发送电子邮件剖析之一,.Net 2.0 中的发送邮件实现小解。

源代码下载地址: 点击下载完整示例程序 (示例路径:/NetFromwork/SendMail.aspx)

ASP.NET 2.0中发送电子邮件相关推荐

  1. 如果不使用 SQL Mail,如何在 SQL Server 中发送电子邮件

    如果不使用 SQL Mail,如何在 SQL Server 中发送电子邮件 察看本文应用于的产品 文章编号 : 312839 最后修改 : 2006年12月21日 修订 : 10.1 本页 概要 SQ ...

  2. 在ASP.NET 2.0中建立站点导航层次

    站点导航提供程序--ASP.NET 2.0中的站点导航提供程序暴露了应用程序中的页面的导航信息,它允许你单独地定义站点的结构,而不用考虑页面的实际物理布局.默认的站点导航提供程序是基于XML的,但是你 ...

  3. net类库中发送电子邮件的方法总结

    发送电子邮件是许多需要用户注册的网站的通用功能,通过正则表达式我们可以过滤掉不符合电子邮件格式的输入,但是仍没有办法确保用户填写的电子邮件地址一定是他本人真实有效的电子邮件地址,通常验证电子邮件真实有 ...

  4. ASP.NET 2.0 中的资源与本地化

    转自MSDN 下载本文的代码:BasicInstincts2006_08.exe (878KB) 本页内容 控制页面级别的区域性设置 使用配置文件跟踪语言首选项 ASP.NET 2.0 中的资源文件 ...

  5. ASP.NET 2.0中的跨页面提交

    简介 在ASP.NET 1.X 版本中,页面都是提交到自己本身,并不能方便的指定需要提交的目的页面.例如FirstPage.aspx中的button只能提交到FirstPage.aspx,而不能提交到 ...

  6. ASP.NET 2.0中实现跨页面提交

    ASP.NET 2.0中实现跨页面提交 在ASP.NET 1.X 版本中,页面都是提交到自己本身,并不能方便的指定需要提交的目的页面.例如FirstPage.aspx中的button只能提交到Firs ...

  7. [翻译]在Asp.net 2.0中操作数据::母板页和站点导航

    在Asp.net 2.0中操作数据::母板页和站点导航 英文原文 |  下载示例代码(C#)  |  翻译进度  |  英文教程目录 导言 通常,用户友好的个性化站点都有着一致的,站点统一的页面布局和 ...

  8. 在ASP.NET 2.0中使用样式、主题和皮肤

    ASP.NET 2.0的主题和皮肤特性使你能够把样式和布局信息存放到一组独立的文件中,总称为主题(Theme).接下来我们可以把这个主题应用到任何站点,用于改变该站点内的页面和控件的外观和感觉.通过改 ...

  9. asp.net 2.0中设定默认焦点按钮

    在asp.net 1.1中,当要在page_load页面中,设置某个控件为默认的焦点按钮(也就是默认焦点是在这个控件上的),可能要用到javascript的代码,而在ASP.NET 2.0中,不用这些 ...

最新文章

  1. python 读帧和绘图的区别
  2. MT6573驱动开发日志之touchpanel .
  3. 根号x_干货 | 设x=my+n?这不耍流氓嘛
  4. matlab中画花瓣,matlab画心,画玫瑰花,表白合集
  5. SpringBoot: SpringBoot里面创建导出Excel的接口(亲测)
  6. android 保存ArrayListObject至SharedPreferences
  7. OpenFire源码学习之二十一:openfie对用户的优化(上)
  8. Qt学习之Qt基础入门(下)
  9. Java—Iterator接口介绍及使用
  10. 使用递归法求阶乘(C语言)
  11. Android graphic: bitmap and it's principle
  12. 矩阵分解——三角分解(二)
  13. bt种子爬虫程序和种子解析(大蟒蛇语言编写)
  14. 嵌入式系统安全实验-下载Linux内核源代码生成内核映像
  15. Percona XtraBackup User Manual
  16. Redis 缓存穿透、缓存雪崩、热点Key问题分析和解决方案
  17. 行星运动轨迹的程序实现
  18. Samba服务器的配置和使用
  19. BZOJ4416 [Shoi2013]阶乘字符串
  20. 深度学习训练之optimizer优化器(BGD、SGD、MBGD、SGDM、NAG、AdaGrad、AdaDelta、Adam)的最全系统详解

热门文章

  1. Linux chmod
  2. 卡巴斯基发现新型恶意软件StoneDrill,或与 Shamoon有关
  3. 全世界关于数学家和科学家的电影
  4. zabbix-3.0.4安装部署
  5. JAVA https证书相关
  6. 解读SSL ***技术(二)
  7. JavaScript导出图片和数据到Excel
  8. Docker快速安装RabbitMQ服务
  9. zephir 编译php,使用Zephir来快速编写高性能PHP二进制拓展
  10. 计算机网络-网络应用