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

ASP.NET
二级域名Cookie问题的解决方法
如何为asp.net网站项目添加子项目
asp.net用url重写URLReWriter实现任意二级域名
asp.net 序列化and反序列化演示
asp.net Timer的使用方法
AjaxControlToolKit DropDownExtender(下拉扩展控件)使用方法
AjaxControlToolKit CalendarExtender(日历扩展控件)的使用方法
让GridView只显示特定用户的数据的方法
让GridView只更新某些特定的数据的方法
ajaxControlToolkit中CascadingDropDown的用法说明
axp.net ScriptManager的简单用法
把程序集安装到全局程序集缓存中的步骤
引用全局程序集缓存内的程序集的方法
asp.net COOKIES需要注意的一点
asp.net UrlReWriter使用经验小结
页面导出为Excel的时间格式的问题
asp.net cookie清除的代码
Asp.net XMLHTTP封装类(GET,Post发送和接收数据)
ASP.NET XmlHttp跨域访问实现代码
Asp.NET 随机码生成基类(随机字母,随机数字,随机字母+数字)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 38 ::
收藏到网摘: 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],身份验证的时候也是如此。