在网站中,我们经常需要注册一个账号,然后用这个账号来登录网页,执行一些经过身份认证后才能执行的操作, 为了确定注册的账号的确是用户自己的信息,并保证用户账号的安全性,在这里引入了 邮件激活账号的方式来验证用户注册的账号, 在用户忘记密码时,可以通过邮箱来修改密码,这些功能我们在浏览网页时,经常会遇到,但是这些功能到底是怎么实现的,看起来很神秘,其实方法很简单,下面我自己实现了一个邮件激活账号的功能,用户注册表的结构如下:
接下来是发送邮件的主要的代码片段:
首先要引用两个命名空间 system.Net.Mail system.Net
具体代码如下:
/// <summary>
/// 注册账号激活
/// </summary>
/// <param name="email">email 账号</param>
/// <param name="activecode">随机码</param>
/// <param name="number">用户编号</param>
public void SendEmail(string email, string activecode ,string number)
{
try
{
MailMessage mailmsg = new MailMessage();
mailmsg.From = new MailAddress("sunnydayhu@163.com");
// mailmsg.Sender = new MailAddress ("sunnydayhu@163.com");
mailmsg.To.Add(email);
// 邮件标题
mailmsg.Subject = "注册账号激活";
// 邮件的优先级
mailmsg.Priority = MailPriority.High;
// 邮件内容
StringBuilder strbulid = new StringBuilder();
strbulid.Append("请单击以下链接完成账号激活");
strbulid.Append("</br><a href='http://localhost:15464/account/login?activecode='" + activecode + "&id=" + number + "'>激活账号</a>");
strbulid.Append("</br></br> 或者直接输入以下地址: http://localhost:15464/account/login?activecode=" +activecode+"&id="+ number);
// 设置邮件正文
mailmsg.Body = strbulid.ToString();
//设置邮件正文的编码方式
mailmsg.BodyEncoding = System.Text.Encoding.UTF8;
// 是否以 html格式显示
mailmsg.IsBodyHtml = true;
SmtpClient smtclient = new SmtpClient();
smtclient.UseDefaultCredentials =true;
//指定如何处理待发送的电子邮件
smtclient.DeliveryMethod = SmtpDeliveryMethod.Network;
// 发送邮件的主机名称
smtclient.Host = "smtp.163.com";
// 设置 SMTP 的端口号
smtclient.Port = 25;
NetworkCredential netcred = new NetworkCredential();
// 发送邮件的邮箱的用户名(完整的邮箱号去掉 @后面的部分)
netcred.UserName = "sunnydayhu";
// 发送邮件的邮箱的密码
netcred.Password = "*****";
smtclient.Credentials = netcred;
// 发送邮件
smtclient.Send(mailmsg);
}
catch (Exception )
{
}
}
在账号注册成功时,向注册账号的邮箱中发送一封账号激活的邮件通知,在没有激活账号时, 用户无法使用登账号进行登录,系统会提示: 没有通过邮箱验证
运行效果如下 :
这只是一个简单的实现邮件激活账号的功能,如果有兴趣的话,自己也可以实现这个功能。