您的位置:首页 > 编程语言 > ASP

ASP.NET MVC通过发送邮件激活注册用户

2015-01-11 12:44 771 查看
摘自:
http://blog.csdn.net/xu651871110/article/details/5939340
1) 建一个发送邮件的通用类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Mail;
using System.Text;

/// <summary>
///发送邮件类
/// </summary>
public class MailService
{
/// <summary>
/// 发送邮件的方法
/// </summary>
/// <param name="toMail">目的邮件地址</param>
/// <param name="title">发送邮件的标题</param>
/// <param name="content">发送邮件的内容</param>
public void SendMail(string toMail,string title, string content)

{

MailMessage mailMessage = new MailMessage();

SmtpClient client= new SmtpClient();
//收件人邮箱地址
//第一个参数是发信人邮件地址
//第二参数是发信人显示的名称
//第三个参数是 第二个参数所使用的编码,如果指定不正确,则对方收到后显示乱码
mailMessage.To.Add(new MailAddress(toMail,toMail.ToString(),Encoding.UTF8));
//邮件标题编码
mailMessage.SubjectEncoding = Encoding.UTF8;
//邮件主题
mailMessage.Subject = title;
//邮件内容
mailMessage.Body = content;
//邮件内容编码
mailMessage.BodyEncoding = Encoding.UTF8;

//设置正文内容是否是包含Html的格式
mailMessage.IsBodyHtml = true ;
//发送邮件的优先等级(有效值为High,Low,Normal)
mailMessage.Priority = MailPriority.Normal;
client.SendCompleted += new SendCompletedEventHandler(client_SendCompleted);
//发送邮件
//client.Send(mailMessage); //同步发送
client.SendAsync(mailMessage, mailMessage.To); //异步发送 (异步发送时页面上要加上Async="true" )
}

void client_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{

if (e.Cancelled)
{
System.Web.HttpContext.Current.Response.Write("<script>alert('Sending of email message was cancelled.');</script>");
}
if (e.Error == null)
{
System.Web.HttpContext.Current.Response.Write("<script>alert('Mail sent successfully');</script>");
}
else
{
System.Web.HttpContext.Current.Response.Write("<script>alert('Error occured, info=" + e.Error.Message + "');</script>");
}

}

}

2) 在web.config里配置代码:

web.config的配置:

<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="your email address">
<network defaultCredentials="false" host="your eamil ip" port="端口号" userName="your email name" password="your email password"/>
</smtp>
</mailSettings>
</system.net>

3) Controller的代码:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AddUser(User user)
{
//激活码
string code = Guid.NewGuid().ToString("N");
userService.AddUser(user,code);
string content = System.IO.File.ReadAllText(Server.MapPath("~/NewMemberEmail.txt"));
content = content.Replace("[Name]", user.LoginId);
content = content.Replace("[LINK]", "<a href='http://" + Request.Url.Host + ":" + Request.Url.Port + "/User/Activation-" + Server.UrlEncode(user.LoginId) + "-" + code + "'>激活注册用户</a>");
content = content.Replace("[UserName]", user.LoginId);
content = content.Replace("[Pwd]", user.LoginPass);
mailService.SendMail(user.email,"测试",content);
return View("Login");
}

/// <summary>
/// 处理激活
/// </summary>
/// <param name="id">用户登录id</param>
/// <param name="code">激活码</param>
/// <returns></returns>
public ActionResult Activation(string id,string code)
{
string content="";
if (userService.ActivateUser(id, code))
{
content="<script>alert('激活成功');window.close();</script>;";
}
else
{
content = "<script>alert('激活失败');window.close();</script>;";
}
return Content(content);
}

4) NewMemberEmail.txt的内容:

亲爱的 [Name],

请点击以下链接激活来激活你的帐号。

[LINK]

用户名: [UserName]
密码: [Pwd]

感谢您注册成为我们的一员。

5) 修改数据库的业务方法:

public bool ActivateUser(string loginId,string code)
{
User user = GetUser(loginId); //根据登录ID查出用户信息
if (user!=null)
{
if (user.code.Equals(code))
{
user.type = "激活";
Entities.SaveChanges();
return true;
}
}
return false;

}

6) 在Global.asax.cs里添加如下代码:

routes.MapRoute(
"Mail",
"User/Activation-{id}-{code}",
new { controller = "User", action = "Activation", id = "", code = "" }
);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐