如何解决如何发送确认电子邮件回复? MVC核心
我正在使用 MailKit 和 Mailtrap.io(sqlite 和 EF)。 下面我有一个我这样做的方式的例子,我可以将它复制到我的用户控制器上,就像我在下面创建它的方式一样。
我的 ServiceDb 看起来像这样:
public bool SendMail(string name,string email,string subject,string body)
{
var mailMessage = new MimeMessage();
mailMessage.From.Add(new MailBoxAddress("TheMailTrap","manager@TheMailTrap.com"));
mailMessage.To.Add(new MailBoxAddress(name,email));
mailMessage.Subject = subject;
mailMessage.Body = new TextPart("plain")
{
Text = body
};
try
{
var smtpClient = new SmtpClient();
smtpClient.Connect("smtp.mailtrap.io",2525,SecureSocketoptions.StartTls);
smtpClient.Authenticate("61618d4d83c43242344d","b5be3640923423434342f2afa"); // replace with your mailtrap.io credentials
smtpClient.Send(mailMessage);
smtpClient.disconnect(true);
return true;
}
catch (Exception)
{
return false;
}
}
我的患者控制器:
public IActionResult Create(Patient u)
{
if (svc.IsDuplicateEmailPatient(u.EmailAddress,u.Id))
{
//alerting the user that the email address is in use
ModelState.AddModelError(nameof(u.EmailAddress),"The Email is already in use");
}
//Complete POST action and add the user
if (ModelState.IsValid)
{
svc.AddPatient(u);
// send patient an email to confirm account. Add whatever message you want
if (!svc.SendMail(u.Name,u.EmailAddress,"New Account","THIS IS A TEST!!!! :D "))
{
Alert("Email Not Sent",AlertType.warning);
}
else
{
Alert("User Was Created. Email sent",AlertType.success); //alert successful
}
return RedirectToAction(nameof(Index));
}
return View(u); // Return if validation errors has occured
}
我正在查看有关如何执行此操作的在线教程,但这与我所学到的实现此操作的方式大不相同。我基本上想确保当有人注册到特定角色时,我希望他们在经理“批准”之前等待 - 以确保他们注册的角色是真实的!
但是,例如,如果他们注册为患者,则会发送确认电子邮件,他们可以自行确认。
有人知道最干净的方法吗? - 我的编码水平是初学者,我一直在寻找我认为可行的方法然后失败。
在我的 Startup.cs 中,我已经实现了身份:
services.AddIdentity<User,IdentityRole>(opt =>
{
opt.Password.requiredLength = 7;
opt.Password.requiredigit = false;
opt.Password.RequireUppercase = false;
opt.User.RequireUniqueEmail = true;
opt.SignIn.RequireConfirmedEmail = true;
});
据我所知,这看起来必须实施!
我的用户控制器如下所示:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Register([Bind("Name,Email,Password,PasswordConfirm,Role")] UserRegisterviewmodel m)
{
if (!ModelState.IsValid)
{
return View(m);
}
// add user via service
var user = _svc.AddUser(m.Name,m.Email,m.Password,m.Role);
// check if error adding user and display warning
if (user == null) {
Alert("There was a problem Registering. Please try again",AlertType.warning);
return View(m);
}
Alert("Successfully Registered. Now login",AlertType.info);
return RedirectToAction(nameof(Login));
}
我的模型用户类
public enum Role { Admin,Manager,Guest }
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string Password { get; set; }
// User role within application
public Role Role { get; set; }
// used to store jwt auth token
public string Token { get; set; }
}
我从我在患者控制器中所做的事情知道我可以复制发送的电子邮件,但我不知道如何获得要发送的确认电子邮件?
我确实看到有些人在控制器中使用用户管理器,我应该有这样的东西吗? //私有只读 UserManager _userManager;
我对这个完全迷失了。我确实尝试过很长时间:https://s3.amazonaws.com/recaffeinate-files/LittleAspNetCoreBook.pdf - 这是 .Net 上的教程,但我对此不知所措。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。