public static bool SendEmail(IDictionary<string,object> context, string email, string templateName, Action<EmailMessage> defaultMessage = null) { //Get template var template = TemplateService.ProcessTemplate(templateName, context, CultureInfo.CreateSpecificCulture(CustomerSession.Language)); //Create email message var emailMessage = new EmailMessage(); emailMessage.To.Add(email); if (template != null) { emailMessage.Html = template.Body; emailMessage.Subject = template.Subject; } else if (defaultMessage != null) { //Use default template defaultMessage(emailMessage); } //UserSecurity.UserManager.SendEmailAsync() //Send email return EmailService.SendEmail(emailMessage); }
public static bool SendEmail(string linkUrl, string user, string email, string templateName, Action<EmailMessage> defaultMessage) { //Get template var context = new Dictionary<string, object> { { templateName, new SendEmailTemplate { Url = linkUrl, Username = user } } }; var template = TemplateService.ProcessTemplate(templateName, context, CultureInfo.CreateSpecificCulture(UserHelper.CustomerSession.Language)); //Create email message var emailMessage = new EmailMessage(); emailMessage.To.Add(email); if (template != null) { emailMessage.Html = template.Body; emailMessage.Subject = template.Subject; } else { //Use default template defaultMessage(emailMessage); } //Send email return EmailService.SendEmail(emailMessage); }
public ActionResult ForgotPassword(ForgotPasswordModel model) { if (ModelState.IsValid) { try { var account = _userClient.GetAccountByUserName(model.UserName); if (account == null) { TempData[GetMessageTempKey(MessageType.Error)] = new[] { "Such account does not exist in our database".Localize() }; return RedirectToAction("LogOn"); } if (account.RegisterType == (int)RegisterType.Administrator || account.RegisterType == (int)RegisterType.SiteAdministrator) { //The message is tricky in purpose so that no one could guess admins username!!! TempData[GetMessageTempKey(MessageType.Error)] = new[] { "Such account does not exist in our database".Localize() }; return RedirectToAction("LogOn"); } //Get reset token var token = _webSecurity.GeneratePasswordResetToken(model.UserName); //Collect data var contact = _userClient.GetCustomer(account.MemberId); var linkUrl = Url.Action("ResetPassword", "Account", new { token }, Request.Url.Scheme); var userName = contact != null ? contact.FullName : model.UserName; //User name can also be an email in most cases var email = UserHelper.GetCustomerModel(contact).Email ?? model.UserName; //Get template var context = new Dictionary<string, object>() { { "ResetPasswordTemplate", new ResetPasswordTemplate { Url = linkUrl, Username = userName } } }; var template = _templateService.ProcessTemplate("forgot-password", context, CultureInfo.CreateSpecificCulture(UserHelper.CustomerSession.Language)); //Create email message var emailMessage = new EmailMessage(); emailMessage.To.Add(email); if (template != null) { emailMessage.Html = template.Body; emailMessage.Subject = template.Subject; } else { //Use default template emailMessage.Html = string.Format( "<b>{0}</b> <br/><br/> To change your password, click on the following link:<br/> <br/> <a href='{1}'>{1}</a> <br/>", userName, linkUrl); emailMessage.Subject = "Reset password"; } //Send email _emailService.SendEmail(emailMessage); TempData[GetMessageTempKey(MessageType.Success)] = new[] { "The reset password link was generated. Check you email to reset password.".Localize() }; } catch (Exception ex) { TempData[GetMessageTempKey(MessageType.Error)] = new[] { ex.Message }; } } return RedirectToAction("LogOn"); }