public async Task <IActionResult> OnPostChangeEmailAsync() { var user = await _userManager.GetUserAsync(User).ConfigureAwait(false); if (user == null) { return(NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.")); } if (!ModelState.IsValid) { await LoadAsync(user).ConfigureAwait(false); return(Page()); } var email = await _userManager.GetEmailAsync(user).ConfigureAwait(false); if (Input.NewEmail != email) { if (_userManager.Options.SignIn.RequireConfirmedEmail) { var userId = await _userManager.GetUserIdAsync(user).ConfigureAwait(false); var code = await _userManager.GenerateChangeEmailTokenAsync(user, Input.NewEmail).ConfigureAwait(false); var callbackUrl = Url.Page( "/Account/ConfirmEmailChange", pageHandler: null, values: new { userId, email = Input.NewEmail, code }, protocol: Request.Scheme); await _emailSender.SendEmailAsync( Input.NewEmail, "Confirm your email", $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.") .ConfigureAwait(false); StatusMessage = "Confirmation link to change email sent. Please check your email."; return(RedirectToPage()); } else { user.Email = Input.NewEmail; var result = await _userManager.UpdateAsync(user).ConfigureAwait(false); if (result.Succeeded) { StatusMessage = "Your email has been updated."; } else { StatusMessage = $"Error: {string.Join(", ", result.Errors.Select(e => e.Description))}"; } return(RedirectToPage()); } } StatusMessage = "Your email is unchanged."; return(RedirectToPage()); }