C# 电子邮件确认验证
我有一个Wcf服务和一个Xamarin.forms移动应用程序,当用户从移动应用程序注册时,我希望web服务向用户发送电子邮件验证,当用户转到他/她的电子邮件并单击链接时,用户帐户将被激活 我只有一个解决方案,那就是在验证链接中有用户id,并给出服务url,后跟验证函数和用户id 有没有更好的安全方法,这样做,因为我不想给wcf链接中的链接C# 电子邮件确认验证,c#,wcf,xamarin.forms,C#,Wcf,Xamarin.forms,我有一个Wcf服务和一个Xamarin.forms移动应用程序,当用户从移动应用程序注册时,我希望web服务向用户发送电子邮件验证,当用户转到他/她的电子邮件并单击链接时,用户帐户将被激活 我只有一个解决方案,那就是在验证链接中有用户id,并给出服务url,后跟验证函数和用户id 有没有更好的安全方法,这样做,因为我不想给wcf链接中的链接 private void SendEmailConfirmation(String EmailId,string UserId) {
private void SendEmailConfirmation(String EmailId,string UserId)
{
MailMessage msg = new MailMessage();
SmtpClient smtp = new SmtpClient();
string emailId = EmailId;
msg.From = new MailAddress("YourGmailEmailId@gmail.com");
msg.To.Add(emailId);
msg.Subject = "Confirmation email for account activation";
//For testing replace the local host path with your lost host path and while making online replace with your website domain name
//string ActivationUrl = "http://localhost:8665/FetchUserId(emailId) & "&EmailId=" & emailId);
msg.Body ="Thanks for showing interest and registring in <a href='http://www.activationlink.com'> webservice.com<a> " +
" Please Thanks!";
msg.IsBodyHtml = true;
smtp.Credentials = new NetworkCredential("emailaddress@gmail.com", "mypassword");
smtp.Port = 587;
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
//NetworkCredential Credentials = new NetworkCredential("emailaddress@gmail.com", "Super2@17");
//smtp.UseDefaultCredentials = false;
smtp.Send(msg);
}
private void sendmailconfirmation(字符串EmailId,字符串UserId)
{
MailMessage msg=新的MailMessage();
SmtpClient smtp=新SmtpClient();
字符串emailId=emailId;
msg.From=新邮件地址(“YourGmailEmailId@gmail.com");
msg.To.Add(emailId);
msg.Subject=“账户激活确认邮件”;
//为了进行测试,请使用丢失的主机路径替换本地主机路径,同时使用网站域名进行联机替换
//字符串ActivationUrl=”http://localhost:8665/FetchUserId(emailId)和“&emailId=”&emailId);
msg.Body=“感谢您对webservice.com表现出兴趣并注册”+
“谢谢!”;
msg.IsBodyHtml=true;
smtp.Credentials=新的网络凭据(“emailaddress@gmail.com“,“我的密码”);
smtp.Port=587;
smtp.Host=“smtp.gmail.com”;
smtp.EnableSsl=true;
//NetworkCredential凭据=新的NetworkCredential(“emailaddress@gmail.com", "Super2@17");
//smtp.UseDefaultCredentials=false;
smtp.Send(msg);
}
您需要导入上述名称空间。您可以创建一个函数来生成不合理的代码(如令牌、哈希、guid或类似的代码),并将其与用户数据和激活该链接的日期限制(例如24小时)相关联
然后,当用户使用令牌单击此链接时,您将验证令牌是否仍然有效并启用用户帐户。发送邮件不是OP的问题。您的问题是什么?是用户的身份吗?确认链接?
using System.Linq;
using System.Net;
using System.Net.Mail;