public async Task Handle(UserRegisteredEvent notification, CancellationToken cancellationToken) { if (!_options.RequireConfirmedEmail || string.IsNullOrWhiteSpace(notification.Url)) { return; } var user = await _userStore.FindByIdAsync(notification.UserId, cancellationToken); var templateOptions = _interactionOptions.Emails?.EmailConfirmation?.TemplateOptions ?? new EmailTemplateOptions { File = "user-registered-confirmation.html", FileStorageType = FileStorageTypes.Embedded }; var subject = _interactionOptions.Emails?.EmailConfirmation?.Subject ?? "User registration email confirmation"; var confirmationContent = await _emailTemplate.Generate(new ConfirmationEmailModel { Url = notification.Url }, templateOptions); await _emailer.Send(user.Email, subject, confirmationContent); }
public async Task Handle(ForgotPasswordRequestedEvent notification, CancellationToken cancellationToken) { var user = await _userManager.FindByIdAsync(notification.UserId); if (user == null) { throw new DomainException($"User {notification.UserId} not found."); } var templateOptions = _interactionOptions.Emails?.ForgotPassword?.TemplateOptions ?? new EmailTemplateOptions { File = "user-forgotpassword-request.html", FileStorageType = FileStorageTypes.Embedded }; var subject = _interactionOptions.Emails?.ForgotPassword?.Subject ?? "Reset password"; var content = await _emailTemplate.Generate(new ForgotPasswordEmailModel { Url = notification.Url }, templateOptions); await _emailer.Send(user.Email, subject, content); }