当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > Asp.Net类库中发送电子邮件的代码

ASP.NET
如何在ASP.NET中使用SmtpMail发送邮件
在VB.NET中利用Split和Replace函数计算字数
Attribute应用:简化ANF自定义控件初始化过程
ASP.NET 2.0移动开发入门之使用样式
ASP.NET 2.0中使用OWC生成图表
ASP.NET 2.0中控件的简单异步回调
一个无法捕获ADO.NET Dataset的内存错误
深入解读ADO.NET2.0的十大最新特性
.Net平台下的分布式缓存设计
ASP.NET全局异常处理浅析
ASP.NET 2.0中文验证码的实现
浅析.NET平台编程语言的未来走向
.net 框架程序设计收藏
使用ASP.NET MVC Futures 中的异步Action
详解.NET中的XmlReader与XmlWriter
关于.NET中的Server push技术
asp.net页面执行机制
对比JSP和ASP.NET的存储过程
.NET 4.0不会包含System.Shell.CommandLine
ASP.NET十个有效性能优化的方法

ASP.NET 中的 Asp.Net类库中发送电子邮件的代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 69 ::
收藏到网摘: n/a

发送电子邮件是许多需要用户注册的网站的通用功能,通过正则表达式我们可以过滤掉不符合电子邮件格式的输入,但是仍没有办法确保用户填写的电子邮件地址一定是他本人真实有效的电子邮件地址 通常验证电子邮件真实有效的办法是:当用户填写的注册资料经过网站初步格式验证之后,用户并不能利用此帐号登录,系统会向用户注册时填写的电子邮件地址发送一封电子邮件,邮件中给出一个链接,只有当用户点击了这个链接之后才能登录到网站,如果用户填写的电子邮件地址不是真实有效的或者不是他本人的,就不会收到这封电子邮件,这样仍然不能登录,这一步一般称之为电子邮件激活。
  在.net类库中有两种发送电子邮件的方式,一种是在.net2.0以下版本中的做法,一种是.net2.0以上版本的做法。下面分别介绍这两种办法。
  一、.net1.0及.net1.1中的做法(利用CDOSYS消息组件发送电子邮件):
  代码如下:
  using System;
  using System.Web.Mail;
  /// <summary>
  /// 说明:在.net2.0以下版本中发送电子邮件的方法示例
  /// 用到的类主要位于System.Web.Mail命名空间下
  /// 作者:周公
  /// 日期:2008-08-08
  /// 首发地址:http://blog.csdn.net/zhoufoxcn
  /// </summary>
  public class SendMail
  {
  public SendMail()
  {
  }
  /// <summary>
  /// 发送邮件
  /// </summary>
  /// <param name="to">收件人邮件地址</param>
  /// <param name="from">发件人邮件地址</param>
  /// <param name="subject">邮件主题</param>
  /// <param name="body">邮件内容</param>
  /// <param name="username">登录smtp主机时用到的用户名,注意是邮件地址'@'以前的部分</param>
  /// <param name="password">登录smtp主机时用到的用户密码</param>
  /// <param name="smtpHost">发送邮件用到的smtp主机</param>
  public void Send(string to, string from, string subject, string body, string username, string password, string smtpHost)
  {
  MailMessage mail = new MailMessage();
  mail.To = to;//设置收件人地址
  mail.From = from;//设置发件人地址
  mail.Subject = subject;//设置邮件主题
  mail.BodyFormat = MailFormat.Html;//设置邮件以HTML格式发送
  mail.Body = body;//设置邮件内容
  //设置发送邮件时需要身份验证
  mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
  //设置登录邮件主机时的用户名,注意如果发件人地址是[email protected],则用户名是abc而不是[email protected]
  mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", userName);
  //设置登录SMTP主机的用户密码
  mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", password);
  //设置发送邮件的SMTP主机
  SmtpMail.SmtpServer = smtpHost;
  //发送邮件,如果发送不成功会抛出异常
  SmtpMail.Send(mail);
  }
  }
  上面的方法底层用到了CDOSYS组件,用到的类主要是System.Web.Mail.SmtpServer和System.Web.Mail.MailMessage,这种方法已经被微软不赞成使用了,取而代之的是.net2.0中的新增的类和方法。
  二、.net2.0中的做法
  代码:
  using System;
  using System.Net.Mail;
  using System.Net;
  /// <summary>
  /// 说明:在.net2.0以上版本中发送电子邮件的方法示例
  /// 用到的类主要位于System.Net.Mail和System.Net命名空间下
  /// 作者:周公
  /// 日期:2008-08-08
  /// 首发地址:http://blog.csdn.net/zhoufoxcn
  /// </summary>
  public class SendMail2
  {
  public SendMail2()
  {
  }
  /// <summary>
  /// 发送邮件
  /// </summary>
  /// <param name="to">收件人邮件地址</param>
  /// <param name="from">发件人邮件地址</param>
  /// <param name="subject">邮件主题</param>
  /// <param name="body">邮件内容</param>
  /// <param name="username">登录smtp主机时用到的用户名,注意是邮件地址'@'以前的部分</param>
  /// <param name="password">登录smtp主机时用到的用户密码</param>
  /// <param name="smtpHost">发送邮件用到的smtp主机</param>
  public void Send(string to, string from, string subject, string body, string userName, string password, string smtpHost)
  {
  MailAddress from = new MailAddress(from);
  MailAddress to = new MailAddress(to);
  MailMessage message = new MailMessage(from, to);
  message.Subject = subject;//设置邮件主题
  message.IsBodyHtml = true;//设置邮件正文为html格式
  message.Body = body;//设置邮件内容
  SmtpClient client = new SmtpClient(smtpHost);
  //设置发送邮件身份验证方式
  //注意如果发件人地址是[email protected],则用户名是abc而不是[email protected]
  client.Credentials = new NetworkCredential(userName, password);
  client.Send(message);
  }
  }
  在上面的代码中,主要用到了在.net2.0中新增的两个类,分别是System.Net.Mail.MailMessage和System.Net.Mail.SmtpClient两个类,在SMTP身份验证方面用到了System.Net.NetworkCredential类。
  需要注意的是:不管是在那种方式下,身份验证用到的帐号是网页登录是用到的帐号,如果你的邮箱地址是[email protected],在登录mail.163.com邮箱的时候,输入的帐号是zhou而不是[email protected],身份验证的时候也是如此。