Beispiel #1
0
        public ActionResult ActivateByEmail(ActivateByEmail model)
        {
            if (string.IsNullOrEmpty(model.Token))
                return Json(SiteUrls.Instance().SystemMessage());

            if (!ModelState.IsValid)
                return Json(new StatusMessageData(StatusMessageType.Error, "验证码填写错误,发送失败"));

            bool isTimeout = false;
            long userId = Utility.DecryptTokenForValidateEmail(model.Token, out isTimeout);
            if (isTimeout)
            {
                return Json(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                {
                    Title = "链接已经失效",
                    Body = "您使用的链接已经失效,请重新登陆",
                    StatusMessageType = StatusMessageType.Hint
                }));
            }
            if (userId <= 0)
            {
                return Json(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                {
                    Title = "查找不到对应的用户",
                    Body = "对不起,你访问的用户不存在",
                    StatusMessageType = StatusMessageType.Hint
                }));
            }
            IUser user = userService.GetFullUser(userId);
            User userSaveToDB = user as User;
            if (user.AccountEmail != model.AccountEmail)
            {
                string errorMessage;
                bool isValidateEmail = Utility.ValidateEmail(model.AccountEmail, out errorMessage);
                if (!isValidateEmail)
                {
                    Tunynet.Utilities.WebUtility.SetStatusCodeForError(Response);
                    TempData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, Tunynet.Utilities.WebUtility.HtmlDecode(errorMessage));
                    return _ActivateByEmail(model.AccountEmail, model.Token);
                }
                userSaveToDB.AccountEmail = model.AccountEmail;
                userSaveToDB.IsEmailVerified = false;
                membershipService.UpdateUser(userSaveToDB);
            }

            //需要邮箱激活
            try
            {
                System.Net.Mail.MailMessage mailMessage = EmailBuilder.Instance().RegisterValidateEmail(userSaveToDB);
                EmailService emailService = new EmailService();
                //异步发送
                if (emailService.SendAsyn(mailMessage))
                {
                    SiteSettings siteSettings = new SiteSettings();
                    TempData["SendEmailSucceedViewModel"] = SendEmailSucceedViewModelFactory.GetRegisterSendEmailSucceedViewModel(user.AccountEmail);
                    return Json(SiteUrls.Instance().SendEmailSucceed());
                }
            }
            catch (Exception ex)
            {
                LoggerFactory.GetLogger().Log(LogLevel.Error, ex, "创建帐号给用户发送激活邮件时发生错误");
            }
            return Json(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
            {
                Title = "发送失败",
                Body = "邮件发送失败",
                StatusMessageType = StatusMessageType.Hint
            }));
        }
        /// <summary>
        /// 发送获取密码Email
        /// </summary>
        /// <remarks>
        /// 由具体实现类来决定是否发送之前是否验证accountEmail与username的匹配性
        /// </remarks>
        /// <param name="accountEmail">帐号密码</param>
        /// <param name="username">用户名</param>
        /// <returns>发送成功返回true,否则返回false</returns>
        public bool SendRecoverPasswordEmail(string accountEmail, string username = null)
        {
            IUserService userService = DIContainer.Resolve<IUserService>();
            IUser user = userService.FindUserByEmail(accountEmail);
            if (user == null)
                return false;

            if (!string.IsNullOrEmpty(username) && !user.UserName.Equals(username, StringComparison.InvariantCultureIgnoreCase))
                return false;

            EmailService emailService = new EmailService();
            //发送忘记密码邮件
            return emailService.SendAsyn(EmailBuilder.Instance().ResetPassword(user));
        }
        public ActionResult SendAsyn(string spaceKey)
        {
            User user = userService.GetFullUser(spaceKey);
            if (user == null)
                return HttpNotFound();

            bool sendStatus = false;
            try
            {
                System.Net.Mail.MailMessage mailMessage = EmailBuilder.Instance().RegisterValidateEmail(user);
                EmailService emailService = new EmailService();
                sendStatus = emailService.SendAsyn(mailMessage);
            }
            catch (Exception e)
            {
                ILogger logger = LoggerFactory.GetLogger();
                logger.Error(e, "异步发送激活邮件时报错");
            }

            if (sendStatus)
            {
                TempData["SendEmailSucceedViewModel"] = SendEmailSucceedViewModelFactory.GetRegisterSendEmailSucceedViewModel(user.AccountEmail);
                return Redirect(SiteUrls.Instance().SendEmailSucceed());
            }
            TempData["SendEmailStatus"] = false;
            return RedirectToAction("EditUserProfile", new { spaceKey = spaceKey });
        }
Beispiel #4
0
 void UserEmailEventMoudle_After(User sender, CreateUserEventArgs eventArgs)
 {
     EmailService emailService = new EmailService();
     //发送注册成功邮件
     emailService.SendAsyn(EmailBuilder.Instance().RegisterSuccess(eventArgs.Password, sender));
 }