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

ASP.NET
Asp.net 时间操作基类(支持短日期,长日期,时间差)
asp.net 获取机器硬件信息(cpu频率、磁盘可用空间、内存容量等)
asp.net 数据库备份还原(sqlserver+access)
Asp.Net 数据操作类(附通用数据基类)
Asp.net 弹出对话框基类(输出alet警告框)
Asp.net 文件上传类(取得文件后缀名,保存文件,加入文字水印)
Asp.net Socket客户端(远程发送和接收数据)
Asp.net 字符串操作基类(安全,替换,分解等)
Asp.Net数据输出到EXCEL表格中
asp.net Gridview里添加汇总行
asp.net UpdatePanel的简单用法
asp.net ajaxControlToolkit FilteredTextBoxExtender的简单用法
this connector is disabled错误的解决方法
sql事务应用积累
asp.net Page.Controls对象(找到所有服务器控件)
在asp.NET中字符串替换的五种方法
ASP.NET缓存方法分析和实践示例代码
asp.net 在DNN模块开发中遇到的resx怪问题
ASP.NET State service状态服务的问题解决方法
asp.net 结合mysql存储过程进行分页代码

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


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