在ASP.net web api 我正在尝试向新注册用户发送确认邮件,这些用户在单击时有一个链接激活他们的帐户我已经设法通过 SmtpClient 和 NetworkCredential 类发送电子邮件但是我将如何暗示激活部分我不想使用身份2. her是发送邮件的密码。
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;
}
最佳答案
在发送电子邮件之前为用户创建身份验证 token 并将其作为附加参数添加到激活链接中。在该链接触发的操作中,您可以简单地检查 token 并在正确时激活用户,或者将 token 传递给登录 View ,将其存储在隐藏字段中,并在 POST 后与用户名和密码一起检查。就个人而言,我更喜欢第二种选择。
token 可以通过几种方式生成。例如,通过创建用户提供的部分(或全部)数据的哈希值,如用户名 + 密码 + 注册日期。然后,在 token 的验证中,您可以检查它是否等于为该用户存储在数据库中的 token ,或者(如果您不想存储它)在验证期间再次以这种方式生成的哈希。如果用户名+密码组合和 token 都正确,您可以将此用户的帐户设置为事件并允许登录。
顺便说一句,您有两个 System.Net.Mail.MailMessage
类型的变量 - msg
和 mailmessage
我认为只使用一个就可以了足够好。
关于c# - 向新注册用户发送验证电子邮件以激活他们的帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24593785/