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

 

发送电子邮件是许多需要用户注册的网站的通用功能,通过正则表达式我们可以过滤掉不符合电子邮件格式的输入,但是仍没有办法确保用户填写的电子邮件地址一定是他本人真实有效的电子邮件地址,通常验证电子邮件真实有效的办法是:当用户填写的注册资料经过网站初步格式验证之后,用户并不能利用此帐号登录,系统会向用户注册时填写的电子邮件地址发送一封电子邮件,邮件中给出一个链接,只有当用户点击了这个链接之后才能登录到网站,如果用户填写的电子邮件地址不是真实有效的或者不是他本人的,就不会收到这封电子邮件,这样仍然不能登录,这一步一般称之为电子邮件激活。
在.net类库中有两种发送电子邮件的方式,一种是在.net2.0以下版本中的做法,一种是.net2.0以上版本的做法。下面分别介绍这两种办法。

 

一、.net1.0及.net1.1中的做法(利用CDOSYS消息组件发送电子邮件):

代码如下:

  1. using System; 
  2. using System.Web.Mail; 
  3. /// <summary> 
  4. /// 说明:在.net2.0以下版本中发送电子邮件的方法示例 
  5. /// 用到的类主要位于System.Web.Mail命名空间下 
  6. /// 作者:周公 
  7. /// 日期:2008-08-08 
  8. /// 首发地址:http://blog.csdn.net/zhoufoxcn 
  9. /// </summary> 
  10. public class SendMail 
  11.     public SendMail() 
  12.     { 
  13.          
  14.     } 
  15.     /// <summary> 
  16.     /// 发送邮件 
  17.     /// </summary> 
  18.     /// <param name="to">收件人邮件地址</param> 
  19.     /// <param name="from">发件人邮件地址</param> 
  20.     /// <param name="subject">邮件主题</param> 
  21.     /// <param name="body">邮件内容</param> 
  22.     /// <param name="username">登录smtp主机时用到的用户名,注意是邮件地址'@'以前的部分</param> 
  23.     /// <param name="password">登录smtp主机时用到的用户密码</param> 
  24.     /// <param name="smtpHost">发送邮件用到的smtp主机</param> 
  25.     public void Send(string to, string from, string subject, string body, string username, string password, string smtpHost) 
  26.     { 
  27.         MailMessage mail = new MailMessage(); 
  28.         mail.To = to;//设置收件人地址 
  29.         mail.From = from;//设置发件人地址 
  30.         mail.Subject = subject;//设置邮件主题 
  31.         mail.BodyFormat = MailFormat.Html;//设置邮件以HTML格式发送 
  32.         mail.Body = body;//设置邮件内容 
  33.         //设置发送邮件时需要身份验证 
  34.         mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate""1"); 
  35.         //设置登录邮件主机时的用户名,注意如果发件人地址是abc@def.com,则用户名是abc而不是abc@def.com 
  36.         mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", userName); 
  37.         //设置登录SMTP主机的用户密码 
  38.         mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", password); 
  39.         //设置发送邮件的SMTP主机 
  40.         SmtpMail.SmtpServer = smtpHost; 
  41.         //发送邮件,如果发送不成功会抛出异常 
  42.         SmtpMail.Send(mail); 
  43.     } 
  44. }

    上面的方法底层用到了CDOSYS组件,用到的类主要是System.Web.Mail.SmtpServer和System.Web.Mail.MailMessage,这种方法已经被微软不赞成使用了,取而代之的是.net2.0中的新增的类和方法。

 

二、.net2.0中的做法

代码:

  1. using System; 
  2. using System.Net.Mail; 
  3. using System.Net; 
  4. /// <summary>  
  5. /// 说明:在.net2.0以上版本中发送电子邮件的方法示例  
  6. /// 用到的类主要位于System.Net.Mail和System.Net命名空间下  
  7. /// 作者:周公  
  8. /// 日期:2008-08-08  
  9. /// 首发地址:http://blog.csdn.net/zhoufoxcn  
  10. /// </summary>  
  11. public class SendMail2 
  12.     public SendMail2() 
  13.     { 
  14.     } 
  15.     /// <summary>  
  16.     /// 发送邮件  
  17.     /// </summary>  
  18.     /// <param name="to">收件人邮件地址</param>  
  19.     /// <param name="from">发件人邮件地址</param>  
  20.     /// <param name="subject">邮件主题</param>  
  21.     /// <param name="body">邮件内容</param>  
  22.     /// <param name="username">登录smtp主机时用到的用户名,注意是邮件地址'@'以前的部分</param>  
  23.     /// <param name="password">登录smtp主机时用到的用户密码</param>  
  24.     /// <param name="smtpHost">发送邮件用到的smtp主机</param>  
  25.     public void Send(string to, string from, string subject, string body, string userName, string password, string smtpHost) 
  26.     { 
  27.         MailAddress from = new MailAddress(from); 
  28.         MailAddress to = new MailAddress(to); 
  29.         MailMessage message = new MailMessage(from, to); 
  30.         message.Subject = subject;//设置邮件主题  
  31.         message.IsBodyHtml = true;//设置邮件正文为html格式  
  32.         message.Body = body;//设置邮件内容  
  33.         SmtpClient client = new SmtpClient(smtpHost); 
  34.         //设置发送邮件身份验证方式  
  35.         //注意如果发件人地址是abc@def.com,则用户名是abc而不是abc@def.com  
  36.         client.Credentials = new NetworkCredential(userName, password); 
  37.         client.Send(message); 
  38.     } 

 

转帖自:http://blog.csdn.net/zhoufoxcn/archive/2008/08/09/2789413.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值