Как исправить проблему отсутствия подтверждения от почты?
Привет Команда
У меня есть приложение mvc, использующее индивидуальную учетную запись пользователя, и у меня есть метод регистрации с логином внутри моего контроллера. Пользователи действительно зарегистрированы в таблице базы данных, но выдают im, не получая подтверждения от электронной почты. Любой вопрос о том, почему и да, я до сих пор отлаживал код для обоих этих методов и действительно проходит через оба.
Что я уже пробовал:
<pre> // // POST: /Account/Register [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { if(model.Password !=model.ConfirmPassword) { TempData["ErrorMessage"] = "New Password must be different from Old Password!!!"; ViewBag.JavaScriptFunction = "ShowErrorPopup();"; return View(model); } var user = new ApplicationUser { UserName = model.Email, Email = model.Email, FirstName = model.FirstName }; var result = await UserManager.CreateAsync(user, model.Password); if(result.Succeeded) { string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); await UserManager.SendEmailAsync(user.Id, "Confirm your account", ConfirmAccountMailBody(callbackUrl)); model.UserRoles = "PendingUsers"; await this.UserManager.AddToRolesAsync(user.Id, model.UserRoles); return View(); } foreach(var error in result.Errors) { TempData["ErrorMessage"] = error; } } ViewBag.JavaScriptFunction = "ShowErrorPopup();"; return View(model); }
// POST: /Account/Login [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Index(LoginViewModel model, string returnUrl) { if (!ModelState.IsValid) { return View(model); } var emailExist = await UserManager.FindByEmailAsync(model.Email); if(emailExist != null) { if(emailExist.EmailConfirmed == false) { string code = await UserManager.GenerateEmailConfirmationTokenAsync(emailExist.Id); var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = emailExist.Id, code = code }, protocol: Request.Url.Scheme); await UserManager.SendEmailAsync(emailExist.Id, "Confirm your account", ConfirmAccountMailBody(callbackUrl)); TempData["ErrorMessage"] = "Email id is not verified. Please check your email and verify account !!!"; ViewBag.JavaScriptFunction = "ShowErrorPopup();"; return View(model); } } else { TempData["ErrorMessage"] = "Email is not registered !!!"; ViewBag.JavaScriptFunction = "ShowErrorPopup();"; return View(model); } var loggedinUser = await UserManager.FindAsync(model.Email, model.Password); if(loggedinUser !=null) { await UserManager.UpdateSecurityStampAsync(loggedinUser.Id); } // This doesn't count login failures towards account lockout // To enable password failures to trigger account lockout, change to shouldLockout: true var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); switch (result) { case SignInStatus.Success: return RedirectToLocal(returnUrl); case SignInStatus.LockedOut: return View("Lockout"); case SignInStatus.RequiresVerification: return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); case SignInStatus.Failure: default: TempData["ErrorMessage"] = "Email or Password is Incorrect"; ViewBag.JavaScriptFunction = "ShowErrorPopup();"; return View(model); } }