C# 向新注册用户发送验证电子邮件以激活其帐户
在asp。net web api我正在尝试向新注册用户发送确认邮件,这些用户在单击激活其帐户时有一个链接我已设法通过SmtpClient和NetworkCredential类发送电子邮件,但我不想使用identity 2。她是发送电子邮件的密码C# 向新注册用户发送验证电子邮件以激活其帐户,c#,asp.net,asp.net-mvc,asp.net-web-api,C#,Asp.net,Asp.net Mvc,Asp.net Web Api,在asp。net web api我正在尝试向新注册用户发送确认邮件,这些用户在单击激活其帐户时有一个链接我已设法通过SmtpClient和NetworkCredential类发送电子邮件,但我不想使用identity 2。她是发送电子邮件的密码 public bool SendMail() { System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
public bool SendMail()
{
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
string strMessageBody = MailBody;
//System.Web.HttpContext.Current.Response.Write(strMessageBody);
msg.To.Add(MailTo);
if (MailCC != null && MailCC.Length > 0)
{
msg.CC.Add(MailCC); ;
}
if (MailBCC != null && MailBCC.Length > 0)
{
msg.Bcc.Add(MailBCC);
}
//msg.Sender = new System.Net.Mail.MailAddress(MailFrom);
msg.From = new System.Net.Mail.MailAddress(MailFrom);
msg.Subject = MailSubject;
msg.Body = strMessageBody;
msg.IsBodyHtml = true;
//System.Net.Mail.SmtpClient objSmtpClient = new System.Net.Mail.SmtpClient(_strSMTPServer);
//EmailContent c = (EmailContent)content;
SmtpClient mailClient = new SmtpClient();
NetworkCredential basicAuthenticationInfo = new NetworkCredential();
basicAuthenticationInfo.UserName = ConfigurationManager.AppSettings["userName"].ToString();
basicAuthenticationInfo.Password = ConfigurationManager.AppSettings["password"].ToString();
mailClient.UseDefaultCredentials = false;
mailClient.Credentials = basicAuthenticationInfo;
mailClient.Host = ConfigurationManager.AppSettings["host"].ToString();
mailClient.Port = Convert.ToInt32(ConfigurationManager.AppSettings["port"].ToString());
mailClient.EnableSsl = true;
System.Net.Mail.MailMessage mailmessage = msg;
mailmessage.IsBodyHtml = true;
mailClient.DeliveryMethod = SmtpDeliveryMethod.Network;
mailmessage.SubjectEncoding = System.Text.Encoding.UTF8;
mailmessage.BodyEncoding = System.Text.Encoding.UTF8;
mailClient.Send(mailmessage);
return true;
}
在发送电子邮件之前,为用户创建身份验证令牌,并将其作为附加参数添加到激活链接。在该链接触发的操作中,您只需检查令牌并激活用户(如果正确),或者将令牌传递到登录视图,将其存储在隐藏字段中,并在发布后连同用户名和密码一起检查。就我个人而言,我更喜欢第二种选择 令牌可以通过几种方式生成。例如,通过创建用户提供的部分(或全部)数据的散列,如用户名+密码+注册日期。然后,在令牌的验证中,您可以检查它是否等于该用户存储在数据库中的令牌,或者(如果您不想存储它)在验证期间再次以这种方式生成的哈希。如果用户名+密码组合和令牌都正确,则可以将此用户的帐户设置为活动并允许登录
顺便说一句,您有两个类型为
System.Net.Mail.MailMessage
-msg
和MailMessage
的变量,我认为只使用一个就足够了。隐藏字段应该在包含令牌的电子邮件正文中?