public async Task <ActionResult> ForgetPassword(ForgetPasswordViewModel model) { var forgetPasswordValidation = securityProvider.FindUserByEmailAddress(model.Email); if (forgetPasswordValidation != null && this.IsCaptchaValid("Invalid captcha words")) { var newPassword = securityProvider.ResetPassword(forgetPasswordValidation, model.Email); var viewModel = new ForgetPasswordMailViewModel(); viewModel.CustomerName = String.Format("{0} {1}", forgetPasswordValidation.FirstName, forgetPasswordValidation.LastName); viewModel.NewPassword = newPassword; var template = emailTemplateProvider.GetEmailTemplate(EmailTemplates.ForgetPassword); var config = new TemplateServiceConfiguration(); using (var service = RazorEngineService.Create(config)) { var subject = service.RunCompile(template.Subject, "subject", typeof(ForgetPasswordMailViewModel), viewModel); var content = service.RunCompile(template.Content, "content", typeof(ForgetPasswordMailViewModel), viewModel); await mailer.SendMail(model.Email, template.Bcc, subject, content); } TempData["EmailAddress"] = model.Email; return(RedirectToAction("ForgetPasswordSuccess")); } ModelState.AddModelError("ForgetPassword", "Sorry we are unable to validate your account. Please try again."); return(RedirectToAction("ForgetPassword")); }