首先要保证密码的加密算法是可逆的,当申请找回密码的时候,根据邮箱地址找到用户和密码的密文(如果有加密),然后将数据库的密码的密文还原,使用下面代码将其发送给用户。密码可以放在下面代码的body中。
using System;
using System.Net.Mail;
using System.Net;
/// <summary>
/// 说明:在.net2.0以上版本中发送电子邮件的方法示例
/// 用到的类主要位于System.Net.Mail和System.Net命名空间下
/// 日期:2008-08-08
/// </summary>
public class SendMail2
{
public SendMail2() { } /// <summary>
/// 发送邮件
/// </summary>
/// <param>收件人邮件地址</param>
/// <param>发件人邮件地址</param>
/// <param>邮件主题</param>
/// <param>邮件内容</param>
/// <param>登录smtp主机时用到的用户名,注意是邮件地址'@'以前的部分</param>
/// <param>登录smtp主机时用到的用户密码</param>
/// <param>发送邮件用到的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);
//设置发送邮件身份验证方式
//注意如果发件人地址是abc@def.com,则用户名是abc而不是abc@def.com
client.Credentials = new NetworkCredential(userName, password);
client.Send(message);
}
}
这个你需要有一个邮箱系统,类似mail.163.com这样子的邮件系统,其实也可以是一个固定IP的机器,机器上安装上一套邮件系统,比如winwebmail邮件系统,安装配置后就可以使用了。
第二步你可以使用.NET程序中提供的SMTP邮件发送类来进行邮件发送,只是发送时你看是需要给用户原始密码还是随机生成的,如果是原始密码,你需要在发送程序中依据用户的mail地址查询出用户的名文密码(如果是可解密的需要解密),然后把密码作为消息体作为邮件发送给该email即可。如果密码是不可解密的比如MD5,建议你可以在此步骤时使用随机数生成类,生成一个随机数,然后把这个随机数作为email的消息体发送给该email,不过这里需要多一个步骤就是把这个名文MD5后存入数据库。
基本的流程就是这样子了,当然这些过程是可变的,只是根据你实际的需求来处理就好.
后面附上 生鱼片 代码注释:
namespace ConsoleApplication9
{
class Program
{
static void Main(string[] args)
{
MailAddress from = new MailAddress("asdf@112.com", "cary");//设置你的邮件地址和显示用的用户名
MailAddress to = new MailAddress("chenghui921@126.com", "toname");//这里设置发送给谁的邮箱地址和他的用户名
MailMessage message = new MailMessage(from, to);
message.Subject = "The subject";//设置邮件主题
message.Body = "The message body";//设置邮件内容
message.IsBodyHtml = true;//设置邮件发送是否支持以Html格式发送 默认是以纯文本形式发送
string host = "smtp.gmail.com";//这里使用了google的smtp邮件服务器
SmtpClient client = new SmtpClient(host, 587);//google使用587这个端口最为邮件发送接收端口
client.EnableSsl = true;//是否使用安全套接字层(ssl)加密连接
client.Credentials = new NetworkCredential("<<your username>>", "<<your password>>");//设置你的账号 密码
client.Send(message);//发送邮件
Console.ReadLine();
}
}
}
.Net的邮件发送类还是没有Jmail强大,可是用Jmail来处理,用。Net发送类你还得在服务器上面给搭建一个SMTP服务器,所以要想省事还是Jmail好!
1 public void SendMsg(string sAddress,string sPwd,string rAddress,string title,string body,string server,int port)
2
3 {
4
5 MailMessage msg = new MailMessage(sAddress,rAddress);//创建MailMessage对象,接受发送和接收方的地址
6
7 msg.Subject = title;//获取邮件的主题
8
9 msg.Body = body;
10
11 SmtpClient client = new SmtpClient(server,port);//获取服务器及其端口
12
13 client.Credentials = new System.Net.NetworkCredential(sAddress,sPwd);//发送邮件参数(发送人地址和发送方密码)
14
15 client.Send(msg);
16
17 }
18
19 在实现页面Default.cs页面添加:
20
21 protected void Button1_Click(object sender, EventArgs e)
22
23 {
24
25 string sAddress = TextBox1.Text;
26
27 string sPw = TextBox2.Text;
28
29 string rAddress = TextBox3.Text;
30
31 string title = TextBox4.Text;
32
33 string body = TextBox5.Text;
34
35 string server = "stmp.163.com";
36
37 int port = 25;
38
39 WebService s = new WebService();
40
41 s.SendMsg(sAddress, sPw, rAddress, title,body,server,port);
42
43 }
44
45
实现发送电子邮件的功能,需要加System.Net.Mail类
我写过一篇是用Gmail的,测试通过可以使用,可以参考下:
地址如下:http://www.cnblogs.com/carysun/archive/2009/11/12/sendmail-by-gmail.html
主要代码:
namespace ConsoleApplication9
{
class Program
{
static void Main(string[] args)
{
var from = new MailAddress("asdf@112.com", "cary");
var to = new MailAddress("chenghui921@126.com", "toname");
var message = new MailMessage(from, to);
message.Subject = "The subject";
message.Body = "The message body";
message.IsBodyHtml = true;
var host = "smtp.gmail.com";
var client = new SmtpClient(host, 587);
client.EnableSsl = true;
client.Credentials = new NetworkCredential("<<your username>>", "<<your password>>");
client.Send(message);
Console.ReadLine();
}
}
}
不用那么麻烦把,个人观点,我觉得直接找回密码就可以了
这个做法的实现就是当使用者使用密码找回功能时,通过申请资料关联数据库找回密码,然后发Mail通知申请人