由一个当用户忘记密码时自动找回密码的实例触发我看了一些这方面的文章并做了测试,记录如下:
从实现方式上来说分为三种:
1.利用客户端来实现
方法:在页面中加入<A href=" mailto:dtljf@163.com?subject=主题&body=内容">发邮件</A>
评论:这种方式实现简单,但需借用OutLook发送,也不能达到全自动,且安全性不高.
2.利用.NET自带的邮件类来实现
方法:引用System.Web.Mail命名空间,然后在发送时执行如下代码:
MailMessage email = new MailMessage();
email.From = "发件人的Email地址";
email.To = "收件人的Email地址";
email.Subject = "找回密码"; //邮件的主题
email.Body = "您的密码是:dkdkdk"; //邮件的正文内容
MailAttachment att = new MailAttachment("c://test.txt",MailEncoding.Base64); //附件
email.Fields.Add(@" http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //表示基本验证
email.Fields.Add(@" http://schemas.microsoft.com/cdo/configuration/sendusername", "abc"); //发件人的Email登录用户名
email.Fields.Add(@" http://schemas.microsoft.com/cdo/configuration/sendpassword", "abc"); //发件人的Email登录密码
SmtpMail.SmtpServer = "smtp.126.com"; //发送邮件服务器地址
try
{
SmtpMail.Send(email); //发送邮件
}
catch
{
Response.Write("<script>window.alert('"+"发生故障,邮件没有发送成功"+"')</script>");
return;
}
Response.Write("<script>window.alert('"+"邮件发送成功"+"')</script>");
评论:这种方式不用调用第三方组件,代码也相对简单.但其与接收邮件结合实现时不好实现,而且在测试中发现收不到附件.
3.利用第三方组件
方法:以常见的Jmail组件为例,引用Jmail.dll文件后,在发送时执行如下代码:
MessageClass email = new MessageClass();
email.Logging = true; //使用日志
email.Silent = true; //设置为true,JMail不会抛出例外错误.JMail.Send()会根据操作结果返回true或false
email.From = "发件人的Email地址";
email.MailServerUserName = "发件人的Email登录用户名";
email.MailServerPassWord = "发件人的Email登录密码";
email.AddRecipient("收件人的Email地址",null,null);
email.Subject = "找回密码"; //邮件的主题
email.Body = "您的密码是:dkdkdk"; //邮件的正文内容
email.AddAttachment("c://test.txt",true,""); //附件
if (email.Send("smtp.126.com",false)) //发送邮件,参数为邮件发送服务器
{
Response.Write("<script>window.alert('"+"邮件发送成功"+"')</script>");
}
else
{
Response.Write("<script>window.alert('"+"发生故障,邮件没有发送成功"+"')</script>");
}
评论:这种方式功能强大,相对也运行稳定,与邮件接收结合好.但其使用前需用regsvr32注册,且免费版有些功能不开放.
总结:目前只对这三种方式做了测试,肯定还有别的方法,但也无非属于这三类之中.另外邮件的接收没有实践,将来一定补上.
从实现方式上来说分为三种:
1.利用客户端来实现
方法:在页面中加入<A href=" mailto:dtljf@163.com?subject=主题&body=内容">发邮件</A>
评论:这种方式实现简单,但需借用OutLook发送,也不能达到全自动,且安全性不高.
2.利用.NET自带的邮件类来实现
方法:引用System.Web.Mail命名空间,然后在发送时执行如下代码:
MailMessage email = new MailMessage();
email.From = "发件人的Email地址";
email.To = "收件人的Email地址";
email.Subject = "找回密码"; //邮件的主题
email.Body = "您的密码是:dkdkdk"; //邮件的正文内容
MailAttachment att = new MailAttachment("c://test.txt",MailEncoding.Base64); //附件
email.Fields.Add(@" http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //表示基本验证
email.Fields.Add(@" http://schemas.microsoft.com/cdo/configuration/sendusername", "abc"); //发件人的Email登录用户名
email.Fields.Add(@" http://schemas.microsoft.com/cdo/configuration/sendpassword", "abc"); //发件人的Email登录密码
SmtpMail.SmtpServer = "smtp.126.com"; //发送邮件服务器地址
try
{
SmtpMail.Send(email); //发送邮件
}
catch
{
Response.Write("<script>window.alert('"+"发生故障,邮件没有发送成功"+"')</script>");
return;
}
Response.Write("<script>window.alert('"+"邮件发送成功"+"')</script>");
评论:这种方式不用调用第三方组件,代码也相对简单.但其与接收邮件结合实现时不好实现,而且在测试中发现收不到附件.
3.利用第三方组件
方法:以常见的Jmail组件为例,引用Jmail.dll文件后,在发送时执行如下代码:
MessageClass email = new MessageClass();
email.Logging = true; //使用日志
email.Silent = true; //设置为true,JMail不会抛出例外错误.JMail.Send()会根据操作结果返回true或false
email.From = "发件人的Email地址";
email.MailServerUserName = "发件人的Email登录用户名";
email.MailServerPassWord = "发件人的Email登录密码";
email.AddRecipient("收件人的Email地址",null,null);
email.Subject = "找回密码"; //邮件的主题
email.Body = "您的密码是:dkdkdk"; //邮件的正文内容
email.AddAttachment("c://test.txt",true,""); //附件
if (email.Send("smtp.126.com",false)) //发送邮件,参数为邮件发送服务器
{
Response.Write("<script>window.alert('"+"邮件发送成功"+"')</script>");
}
else
{
Response.Write("<script>window.alert('"+"发生故障,邮件没有发送成功"+"')</script>");
}
评论:这种方式功能强大,相对也运行稳定,与邮件接收结合好.但其使用前需用regsvr32注册,且免费版有些功能不开放.
总结:目前只对这三种方式做了测试,肯定还有别的方法,但也无非属于这三类之中.另外邮件的接收没有实践,将来一定补上.