public void TestSendPlainTextOnlyOff() { // Create a member. var member = _memberAccountsCommand.CreateTestMember(Email, FirstName, LastName); // Send. var communication = new PasswordReminderEmail(member, Email, NewPassword); _emailsCommand.TrySend(communication); // Should get both html and plain text versions. var email = _emailServer.AssertEmailSent(); Assert.AreEqual("", email.Body); email.AssertViewCount(2); // Plain view should be first so it is shown properly in gmail / iPhone etc. Assert.AreEqual(MediaTypeNames.Text.Plain, email.AlternateViews[0].MediaType); Assert.AreEqual(MediaTypeNames.Text.Html, email.AlternateViews[1].MediaType); email.AssertView(MediaTypeNames.Text.Html, GetBody(communication, member, GetContent(communication, member, NewPassword))); email.AssertView(MediaTypeNames.Text.Plain, GetPlainBody(communication, GetPlainContent(communication, member, NewPassword))); Assert.AreEqual(email.GetHtmlView().Body, GetBody(communication, member, GetContent(communication, member, NewPassword))); Assert.AreEqual(email.GetPlainTextView().Body, GetPlainBody(communication, GetPlainContent(communication, member, NewPassword))); }
public ActionResult ChangePassword(Guid id, MemberLoginModel memberLogin, [Bind(Include = "SendPasswordEmail")] CheckBoxValue sendPasswordEmail) { var member = _membersQuery.GetMember(id); if (member == null) { return(NotFound("member", "id", id)); } var credentials = _loginCredentialsQuery.GetCredentials(member.Id); if (credentials == null) { return(NotFound("member", "id", id)); } try { // Validate. memberLogin.SendPasswordEmail = sendPasswordEmail.IsChecked; memberLogin.Validate(); // Update. credentials.PasswordHash = LoginCredentials.HashToString(memberLogin.Password); credentials.MustChangePassword = true; _loginCredentialsCommand.UpdateCredentials(member.Id, credentials, User.Id().Value); string message; if (memberLogin.SendPasswordEmail) { var reminderEmail = new PasswordReminderEmail(member, credentials.LoginId, memberLogin.Password); _emailsCommand.TrySend(reminderEmail); message = "The password has been reset and an email has been sent."; } else { message = "The password has been reset."; } return(RedirectToRouteWithConfirmation(MembersRoutes.Edit, new { id }, message)); } catch (UserException ex) { ModelState.AddModelError(ex, new StandardErrorHandler()); } memberLogin.LoginId = credentials.LoginId; return(View("Edit", new UserModel <IMember, MemberLoginModel> { User = _membersQuery.GetMember(id), UserLogin = memberLogin })); }
void ISecurityHandler.OnPasswordReset(bool isGenerated, Guid userId, string loginId, string password) { if (!isGenerated) { return; } var contact = _usersQuery.GetUser(userId); if (contact == null) { return; } var reminderEmail = new PasswordReminderEmail(contact, loginId, password); _emailsCommand.TrySend(reminderEmail, null); }
public void TestEmailAlternateViewsContents() { // Create a member. Member member = _memberAccountsCommand.CreateTestMember(Email, FirstName, LastName); // Send. var communication = new PasswordReminderEmail(member, Email, NewPassword); _emailsCommand.TrySend(communication); // Check. var email = _emailServer.AssertEmailSent(); Assert.AreEqual("", email.Body); email.AssertViewCount(2); email.AssertView(MediaTypeNames.Text.Html, GetBody(communication, member, GetContent(communication, member, NewPassword))); email.AssertView(MediaTypeNames.Text.Plain, GetPlainBody(communication, GetPlainContent(communication, member, NewPassword))); }