C#注册Email发送验证码详解
流程:使用C#中Membership框架完成用户注册
/// <summary>
/// 注册事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
MembershipCreateStatus status;
MembershipUser user= Membership.CreateUser(txtuserName.Text.Trim(), txtPWD.Text.Trim(), txtEmail.Text.Trim(), txtQue.Text.Trim(),
txtAnswer.Text.Trim(), true, out status);
if (status == MembershipCreateStatus.Success)
{
//注册成功
this.Title = "注册成功";
//用户注册的邮箱
BLL.UserInfo bll = new UserInfo();
MODEL.UserInfo model = new MODEL.UserInfo();
model.Id = new Guid(user.ProviderUserKey.ToString());
model.QQ = txtQQ.Text.Trim();
model.IdCode = Guid.NewGuid().ToString().Replace("-", "");
model.UserType = false;
string code = model.IdCode;
string UserId = model.Id.ToString();
//生成注册激活码和用户其他信息
if ( bll.insertUser(model)>0)
{
string emailaddress = txtEmail.Text.Trim();
//发送邮箱验证
IdCodeForEmail(emailaddress, code, UserId);
}
}
if (status == MembershipCreateStatus.InvalidUserName)
{
this.Title = "用户名不合法";
}
if (status==MembershipCreateStatus.DuplicateUserName)
{
this.Title = "用户名重复";
}
//各种Membership中的用户注册判断
}
protected void IdCodeForEmail(string toEmail,string idCode,string userId)
{
MailMessage mailMsg = new MailMessage();//引用 Net.Mail名称空间
mailMsg.From = new MailAddress("***@qq.com", "***集团公司");
mailMsg.To.Add(new MailAddress(toEmail, "尊敬的用户"));
System.Text.StringBuilder eMailCode = new StringBuilder();
eMailCode.Append("请点击下面链接激活账号:");
//=&userName='>点击激活</a>
eMailCode.Append("<a href='a.aspx?code").Append("=").Append(idCode).Append("&userName=").Append(userId).Append("'>点击激活</a>");
//eMail中正文部分
AlternateView htmlBody =
AlternateView.CreateAlternateViewFromString(eMailCode.ToString(), null, "text/html");
mailMsg.AlternateViews.Add(htmlBody);
//eMail中的标题
mailMsg.Subject = "关于***";
SmtpClient client = new SmtpClient("smtp.qq.com");
client.Credentials = new NetworkCredential("***", "***");
client.Send(mailMsg);
}
主要要注意发送时的Smtp域名是否正确
还有就是在Email中嵌入HTML的代码
l
发送
HTML
格式邮件:
AlternateViewhtmlBody =
AlternateView.CreateAlternateViewFromString(htmlBodyContent, null, "text/html");
mailMsg.AlternateViews.Add(htmlBody);
或者mailMsg.IsBodyHtml = true;
(*)《发送带嵌入图片邮件之SMTP实现和ESMTP实现》http://www.cnblogs.com/wuhuacong/archive/2009/11/13/1601491.html 离线文档