public bool SendEmailConfirmationLink(WebUser user)
        {
            if (user == null)
            {
                return(false);
            }

            string link = GenerateRandomLink();

            if (_userRepository.AddConfirmationKey(user, link, ConfirmType.EmailConfirmation))
            {
                string completeLink = _clientUrl + "/account/verify/" + link;
                using MailBuilder builder = new MailBuilder(_configuration);
                MailConfirmEmail model = new MailConfirmEmail
                {
                    FirstName = user.Firstname,
                    LastName  = user.Lastname,
                    Link      = completeLink,
                    To        = user.Email,
                    Type      = EmailKind.EmailConfirmation
                };
                var msg = builder.CreateMailConfirmEmail(model);
                builder.Dispose();
                return(_mailService.Send(msg));
            }
            Logger.LogInformation("Could not save confirmation link {link} for user {user}", link, user);
            return(false);
        }
        public bool SendResetPasswordMail(string email)
        {
            var randomLink = GenerateRandomLink();

            if (_userRepository.CheckIfEmailExists(email))
            {
                var user = _userRepository.TryGetUserByEmail(email);
                if (_userRepository.AddConfirmationKey(user, randomLink, ConfirmType.PasswordReset, DateTime.Now.AddHours(1)))
                {
                    string completeLink = _configuration.GetSection("Links").GetValue <string>("PasswordReset") + "/" + randomLink;
                    using MailBuilder builder = new MailBuilder(_configuration);
                    MailConfirmEmail model = new MailConfirmEmail
                    {
                        FirstName = user.Firstname,
                        LastName  = user.Lastname,
                        Link      = completeLink,
                        To        = user.Email,
                        Type      = EmailKind.PasswordReset
                    };
                    var msg = builder.CreateMailConfirmEmail(model);
                    return(_mailService.Send(msg));
                }
                return(false);
            }
            else
            {
                using MailBuilder builder = new MailBuilder(_configuration);
                return(_mailService.Send(builder.CreateUserDoesNotExistMail(email)));
            }
        }
 public bool SendForgottenUsernameMail(string email)
 {
     if (_userRepository.CheckIfEmailExists(email))
     {
         var user = _userRepository.TryGetUserByEmail(email);
         using MailBuilder builder = new MailBuilder(_configuration);
         MailConfirmEmail model = new MailConfirmEmail
         {
             FirstName = user.Firstname,
             LastName  = user.Lastname,
             To        = user.Email,
             Type      = EmailKind.ForgotUsername,
             Username  = user.Username
         };
         return(_mailService.Send(builder.CreateMailConfirmEmail(model)));
     }
     else
     {
         using MailBuilder builder = new MailBuilder(_configuration);
         return(_mailService.Send(builder.CreateUserDoesNotExistMail(email)));
     }
 }
Exemple #4
0
 public MailMessage CreateMailConfirmEmail(MailConfirmEmail model)
 {
     if (model == null)
     {
         return(null);
     }
     Init(GetFrom(), new MailAddress(model.To, model.FirstName + model.LastName));
     if (!LoadTemplate(model.Type))
     {
         throw new InvalidOperationException("Mail template not found.");
     }
     ReplaceInTemplate("FirstName", model.FirstName);
     ReplaceInTemplate("LastName", model.LastName);
     if (!string.IsNullOrEmpty(model.Link))
     {
         ReplaceInTemplate("ConfirmLink", model.Link);
     }
     if (!string.IsNullOrEmpty(model.Username))
     {
         ReplaceInTemplate("Username", model.Username);
     }
     _message.Body = _body;
     return(_message);
 }