public async Task SendWelcomeEmail(WelcomeNotificationUserDto model) { var subject = "Verify your email one time to complete registration"; dynamic expando = new ExpandoObject(); expando.Subject = subject; expando.Date = String.Format("{0:dddd, d MMMM yyyy}", DateTime.Now); expando.FullName = model.FullName; expando.Email = model.Email; expando.UserName = model.UserName; expando.Message = model.Message; var messageBodyHTML = _templateManager.GetTemplate(NotificationTemplateConst.Welcome_Account_Registration, expando); string emailTemplateFolder = Path.Combine(_webHostEnvironment.WebRootPath, Path.Combine("images", "email")); List <string> attachmentList = new List <string>(); attachmentList.Add(Path.Combine(emailTemplateFolder, "logo.png")); var emailDto = new EmailDto() { FromConst = NotificationFromConst.Info, EmailTo = model.Email, EmailSubject = subject, EmailBody = messageBodyHTML, AttachmentInBodyList = attachmentList, //formFile = new FormFile(new StreamReader(,0,120,"akafsf","TestFile") }; await _emailService.SendEmailAsync(emailDto); }
public async Task <ActionResult> Register(RegisterViewModel model) { try { ExternalLoginInfo externalLoginInfo = null; if (model.IsExternalLogin) { externalLoginInfo = await _signInManager.GetExternalLoginInfoAsync(); if (externalLoginInfo == null) { throw new Exception("Can not external login!"); } model.UserName = model.EmailAddress; model.Password = Authorization.Users.User.CreateRandomPassword(); } else { if (model.UserName.IsNullOrEmpty() || model.Password.IsNullOrEmpty()) { throw new UserFriendlyException(L("FormIsNotValidMessage")); } } var user = await _userRegistrationManager.RegisterAsync( model.Name, string.Empty,// model.Surname, model.EmailAddress, model.UserName, model.Password, false, false, model.MobileNumber, model.ZoomId, model.DOB, model.Gender ); // Getting tenant-specific settings var isEmailConfirmationRequiredForLogin = true; // await SettingManager.GetSettingValueAsync<bool>(AbpZeroSettingNames.UserManagement.IsEmailConfirmationRequiredForLogin); if (model.IsExternalLogin) { Debug.Assert(externalLoginInfo != null); if (string.Equals(externalLoginInfo.Principal.FindFirstValue(ClaimTypes.Email), model.EmailAddress, StringComparison.OrdinalIgnoreCase)) { user.IsEmailConfirmed = true; } user.Logins = new List <UserLogin> { new UserLogin { LoginProvider = externalLoginInfo.LoginProvider, ProviderKey = externalLoginInfo.ProviderKey, TenantId = user.TenantId } }; } await _unitOfWorkManager.Current.SaveChangesAsync(); Debug.Assert(user.TenantId != null); var tenant = await _tenantManager.GetByIdAsync(user.TenantId.Value); // Directly login if possible if (user.IsActive && (user.IsEmailConfirmed || !isEmailConfirmationRequiredForLogin)) { AbpLoginResult <Tenant, User> loginResult; if (externalLoginInfo != null) { loginResult = await _logInManager.LoginAsync(externalLoginInfo, tenant.TenancyName); } else { loginResult = await GetLoginResultAsync(user.UserName, model.Password, tenant.TenancyName); } if (loginResult.Result == AbpLoginResultType.Success) { await _signInManager.SignInAsync(loginResult.Identity, false); return(Redirect(GetAppHomeUrl())); } Logger.Warn("New registered user could not be login. This should not be normally. login result: " + loginResult.Result); } //Welcome Email var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrlMessage = Url.Action(nameof(ConfirmEmail), "Account", new { token = code, email = user.EmailAddress }, protocol: HttpContext.Request.Scheme); try { var welcomeModel = new WelcomeNotificationUserDto() { FullName = user.FullName, Email = user.EmailAddress, UserName = user.UserName, Message = callbackUrlMessage }; await _notificationManager.SendWelcomeEmail(welcomeModel); } catch (Exception ex) { throw ex; } return(View("RegisterResult", new RegisterResultViewModel { TenancyName = tenant.TenancyName, NameAndSurname = user.Name + " " + user.Surname, UserName = user.UserName, EmailAddress = user.EmailAddress, IsEmailConfirmed = user.IsEmailConfirmed, IsActive = user.IsActive, IsEmailConfirmationRequiredForLogin = isEmailConfirmationRequiredForLogin })); } catch (UserFriendlyException ex) { ViewBag.ErrorMessage = ex.Message; model.GenderList = GetGenderSelectListItem(); return(View("Register", model)); } }