/// <summary> /// 重寄驗證信 /// </summary> /// <param name="id">The identifier.</param> /// <returns></returns> public async Task <ActionResult> SendConfirmMail(Guid id) { var result = new CiResult <mgt_User>(); var user = service.Get(id); //check mail var model = new SendEmailViewModel { Email = user.Email, SystemMailType = SystemMailType.ConfirmEmail }; result = service.SendValidCodeCheck(model); //send if (result.IsSuccess) { var mailService = new MailService(SessionManager.Client.ID); var mailContent = new ReplaceMailContent { UserName = result.Data.Name, UserEmail = model.Email }; var mailResult = await mailService.SendEmail(result.Data.ID, mailContent, model.SystemMailType, model.ValidType, fromFn : "Admin_SendConfirmMail"); return(Json(mailResult, JsonRequestBehavior.AllowGet)); } return(Json(result, JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> UpdatePhone(string Phone) { if (!Request.IsAjaxRequest()) { return(ErrorPage()); //404 } var result = service.UpdatePhone(SessionManager.UserID, Phone); //check and addLog if (result.IsSuccess) { result = service.SendSmsValidCodeCheck(Phone); } //送出簡訊驗證碼 if (result.IsSuccess) { var mailService = new MailService(ApplicationHelper.ClientID); var mailContent = new ReplaceMailContent { PhoneNumber = Phone }; var mailResult = await mailService.SendSms(SessionManager.UserID, mailContent, SystemMailType.ConfirmEmail, ValidType.ConfirmPhone, fromFn : "UpdatePhone"); return(Json(mailResult)); } return(Json(result)); }
public async Task <ActionResult> SendValidCodeSelf() { var user = service.Get(SessionManager.UserID); var model = new SendEmailViewModel { Email = user.Email, SystemMailType = SystemMailType.ConfirmEmail, ValidType = ValidType.ConfirmEmail }; var result = service.SendValidCodeCheck(model); if (result.IsSuccess) { var mailService = new MailService(ApplicationHelper.ClientID); var mailContent = new ReplaceMailContent { UserName = result.Data.Name, UserEmail = model.Email }; var mailResult = await mailService.SendEmail(result.Data.ID, mailContent, model.SystemMailType, model.ValidType, fromFn : "SendValidCodeSelf"); return(Json(mailResult)); } return(Json(result, JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> SendValidCode(SendEmailViewModel model) { var result = new CiResult <mgt_User>(); //驗證碼 if (string.IsNullOrWhiteSpace(model.Captcha) || SessionManager.Captcha != model.Captcha) { result.Message = SystemMessage.CaptchaError; } if (string.IsNullOrEmpty(result.Message)) { result = service.SendValidCodeCheck(model); if (result.IsSuccess) { var mailService = new MailService(ApplicationHelper.ClientID); var mailContent = new ReplaceMailContent { UserName = result.Data.Name, UserEmail = model.Email }; var mailResult = await mailService.SendEmail(result.Data.ID, mailContent, model.SystemMailType, model.ValidType, fromFn : "SendValidCode"); return(Json(mailResult)); } } return(Json(result)); }
public async Task <ActionResult> DeleteAssign(Guid id) { var result = service.DeleteAssign(SessionManager.UserID, id); //通知:選手指派取消 (失敗不提醒) if (result.IsSuccess) { try { var data = service.GetUserAssign(id); var mailService = new MailService(ApplicationHelper.ClientID); var mailContent = new ReplaceMailContent { UserName = data.ToUser.Name, UserEmail = data.ToUser.Email, MemberName = data.Member.NickName }; var mailResult = await mailService.SendEmail(data.ToUser.ID, mailContent, SystemMailType.AssignCancel, fromFn : "DeleteAssign"); if (mailResult.IsSuccess) { result.Message += ", " + mailResult.Message; } } catch (Exception e) { var json = _Json.ModelToJson(e); _Log.CreateText(json); } } return(Json(result)); }
public async Task <ActionResult> CreateAssign(Guid childID, string AssignPhoneNumber) { var result = new CiResult(); var toUser = service.GetbyPhone(AssignPhoneNumber.ToTrim()); if (toUser == null) { result.Message = "查無電話號碼"; } if (string.IsNullOrEmpty(result.Message)) { var model = new mgt_UserAssign { UserProfileID = childID, FromUser = SessionManager.UserID, ToUser = toUser.ID }; result = service.CreateAssign(model); } //通知:選手指派新增 (失敗不提醒) if (result.IsSuccess) { try { var data = service.GetUserAssign(result.ID); if (data.ToUser.ID == data.FromUser.ID) { //_Log.CreateText($"[Email no send]指派給自己: User={data.ToUser.ID}, Member={data.Member.NickName}"); } else { var mailService = new MailService(ApplicationHelper.ClientID); var mailContent = new ReplaceMailContent { UserName = data.ToUser.Name, UserEmail = data.ToUser.Email, MemberName = data.Member.NickName }; var mailResult = await mailService.SendEmail(data.ToUser.ID, mailContent, SystemMailType.AssignCreate, fromFn : "CreateAssign"); if (mailResult.IsSuccess) { result.Message += ", " + mailResult.Message; } } } catch (Exception e) { var json = _Json.ModelToJson(e); _Log.CreateText(json); } } return(Json(result)); }
private async Task SendOrderDetailMail(Guid orderDetailID, Guid structureID, SystemMailType mailType) { var mailService = new MailService(ApplicationHelper.ClientID); //存在emailTemplate才寄信-失敗不提醒 if (mailService.IsExistTemplate(mailType, structureID)) { try { // var user = userService.Get(userID); var dataOrder = service.GetDetail(orderDetailID); var memberResult = userService.SendMemberEmails(orderDetailID); //盃-區-組 var order = service.GetView(dataOrder.OrderID, ApplicationHelper.DefaultLanguage, DataLevel.Simple); var subject = order.ParentItemViewModel?.ItemLanguage.Subject ?? ""; if (!string.IsNullOrEmpty(subject)) { subject += "-"; } subject += order.ItemViewModel?.ItemLanguage.Subject + " " + dataOrder.ItemSubject; if (memberResult.IsSuccess) { //所有家長 foreach (var member in memberResult.Data) { var user = member.mgt_UserCreate; if (user.ID == SessionManager.UserID) { //_Log.CreateText($"[Email no send]通知參賽: User={member.ID}, Member={member.NickName}"); } else { var mailCoutent = new ReplaceMailContent { UserName = user.Name, UserEmail = user.Email, MemberName = member.NickName, CompetitionCame = subject }; var mailResult = await mailService.SendEmail(user.ID, mailCoutent, mailType, structureID : structureID, fromFn : "SendOrderDetailMail"); } } } } catch (Exception e) { var json = _Json.ModelToJson(e); _Log.CreateText(json); } } }
private async Task SendOrderMail(Guid orderID, Guid structureID, SystemMailType mailType, Guid userID, string fromFn = "") { var mailService = new MailService(ApplicationHelper.ClientID); //存在emailTemplate才寄信-失敗不提醒 if (mailService.IsExistTemplate(mailType, structureID)) { try { var user = userService.Get(userID); var dataOrder = service.GetView(orderID, ApplicationHelper.DefaultLanguage, DataLevel.Simple); var subject = ""; try { subject = dataOrder.ParentItemViewModel?.ItemLanguage.Subject ?? ""; if (!string.IsNullOrEmpty(subject)) { subject += "-"; } subject += dataOrder.ItemViewModel?.ItemLanguage.Subject; } catch (Exception) { } var mailCoutent = new ReplaceMailContent { UserName = user.Name, UserEmail = user.Email, OrderContent = mailService.CreateOrderContent(dataOrder), OrderATMInfo = mailService.CreateOrderATMInfo(dataOrder), OrderAdminNote = dataOrder.Order.PublicNote, CompetitionCame = subject }; var mailResult = await mailService.SendEmail(userID, mailCoutent, mailType, structureID : structureID, fromFn : fromFn); } catch (Exception e) { var json = _Json.ModelToJson(e); _Log.CreateText(json); } } }
public async Task <ActionResult> SendSmsValidCodeSelf() { var phoneNumber = service.GetMyPhoneNumber(SessionManager.UserID); var result = service.SendSmsValidCodeCheck(phoneNumber); //送出簡訊驗證碼 if (result.IsSuccess) { var mailService = new MailService(ApplicationHelper.ClientID); var mailContent = new ReplaceMailContent { PhoneNumber = phoneNumber }; var mailResult = await mailService.SendSms(SessionManager.UserID, mailContent, SystemMailType.ConfirmEmail, ValidType.ConfirmPhone, fromFn : "UpdatePhone"); return(Json(mailResult)); } return(Json(result, JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> Profile(UserViewModel model) { model.User.ID = SessionManager.UserID; var result = service.UpdateMember(model, ApplicationHelper.ProfileWithEmail, ApplicationHelper.ProfileWithPhone); //重寄驗證信 if (result.IsSuccess && result.Data && ApplicationHelper.ProfileWithEmail) { var mailService = new MailService(ApplicationHelper.ClientID); var mailContent = new ReplaceMailContent { UserName = model.User.Name, UserEmail = model.User.Email }; var mailResult = await mailService.SendEmail(SessionManager.UserID, mailContent, SystemMailType.ConfirmEmail, ValidType.ConfirmEmail); return(Json(mailResult)); } return(Json(result)); }
public async Task <ActionResult> Update(OrderViewModel model) { if (model.User == null) { model.User = new mgt_User(); } model.User.ID = SessionManager.UserID; var result = service.ChangeStatus(model, AccountType.Admin, true); //通知信 if (result.IsSuccess) { var mailService = new MailService(SessionManager.Client.ID); //存在emailTemplate才寄信 if (mailService.IsExistTemplate((SystemMailType)model.Order.OrderStatus, model.Order.StructureID)) { var user = userService.Get(model.Order.CreateUser); var dataOrder = service.GetView(model.Order.ID, SystemLanguage, DataLevel.Simple); var mailCoutent = new ReplaceMailContent { UserName = user.Name, UserEmail = user.Email, OrderContent = mailService.CreateOrderContent(dataOrder), OrderATMInfo = mailService.CreateOrderATMInfo(dataOrder), OrderAdminNote = dataOrder.Order.PublicNote }; var mailResult = await mailService.SendEmail(user.ID, mailCoutent, (SystemMailType)model.Order.OrderStatus, structureID : model.Order.StructureID); result.Message += "<br>" + mailResult.Message; } } return(Json(result)); }
public async Task <ActionResult> UpdateEmail(string Email) { var result = service.UpdateEmail(SessionManager.UserID, Email); //check and addLog if (result.IsSuccess) { var model = new SendEmailViewModel { Email = Email, SystemMailType = SystemMailType.ConfirmEmail, ValidType = ValidType.ConfirmEmail }; result = service.SendValidCodeCheck(model); } //重寄驗證信 if (result.IsSuccess) { var mailService = new MailService(ApplicationHelper.ClientID); var mailContent = new ReplaceMailContent { UserName = SessionManager.UserName, UserEmail = Email }; var mailResult = await mailService.SendEmail(SessionManager.UserID, mailContent, SystemMailType.ConfirmEmail, ValidType.ConfirmEmail); //重新登入 //SessionManager.RemoveAll(); return(Json(mailResult)); } return(Json(result)); }
/// <summary> /// 寄送簡訊 /// </summary> /// <param name="userID">user id</param> /// <param name="model">Mail內容取代字串</param> /// <param name="systemMailType">郵件類型</param> /// <param name="validType">驗證碼類型</param> /// <param name="structureID">郵件類型structure</param> /// <param name="fromFn">來源</param> /// <returns></returns> public async Task <CiResult> SendSms(Guid userID, ReplaceMailContent model, SystemMailType systemMailType, ValidType?validType = null, Guid?structureID = null, string fromFn = "") { var result = new CiResult <SMSViewModel> { IsSuccess = true }; var smsTool = new SmsTool { }; //ReplaceMailContent model.WebsiteUrl = RouteHelper.BaseUrl(); if (string.IsNullOrEmpty(model.PhoneNumber) || !_Check.IsPhone(model.PhoneNumber)) { result.IsSuccess = false; } //system setting if (!ApplicationHelper.ClientSettings.Contains(ClientSetting.SMS)) { result.IsSuccess = false; _Log.CreateText($"SendSms no setting"); } //get setting if (result.IsSuccess) { var smsResult = settingService.Get <SmsServiceViewModel>(SystemSettingType.SmsService); smsTool.setting = smsResult.Data; if (!smsResult.IsSuccess || !smsResult.Data.IsEnabled) { result.IsSuccess = false; } } if (result.IsSuccess) { var siteResult = settingService.Get <SiteInfoViewModel>(SystemSettingType.SiteInfo); if (siteResult.IsSuccess) { model.WebsiteName = siteResult.Data.SiteName; } else { result.IsSuccess = false; } } //create validCode if (result.IsSuccess && validType != null) { var validCodeResult = userService.CreateValidCode(userID, validType.Value, length: 5); if (validCodeResult.IsSuccess) { model.ValidCode = validCodeResult.Data; } else { result.IsSuccess = false; } } //get template var template = new cms_EmailTemplate(); if (result.IsSuccess) { template = templateService.GetByType(systemMailType, structureID); if (template != null) { // set template smsTool.message = model.ReplaceContent(template.SMSContent); } else { result.IsSuccess = false; _Log.CreateText($"SendSms no template: {systemMailType.ToString()}"); } } //send mail (測試中不寄簡訊) if (result.IsSuccess) { if (ApplicationHelper.IsLocal) { _Log.CreateText($"Local not send SMS: {model.PhoneNumber} >> {smsTool.message}"); } else { result = await smsTool.Send(userID, model.PhoneNumber); } //add log var log = new cms_SmsLog { PhoneNumber = model.PhoneNumber, SMSContent = smsTool.message, ToUser = userID, IsSend = result.IsSuccess,//是否已發送 SendTime = DateTime.Now, CreateTime = DateTime.Now, }; if (result.IsSuccess && result.Data != null) { log.Msgid = result.Data.MsgId; log.SmsResultType = (int)result.Data.ResultType; log.UpdateResultTime = DateTime.Now; } smsService.CreateLog(log); } if (result.IsSuccess) { if (systemMailType == SystemMailType.ConfirmEmail) { result.Message = string.Format(SystemMessage.PhoneConfirm, model.PhoneNumber); } else { result.Message = SystemMessage.SendSmsSuccess; } } else if (string.IsNullOrEmpty(result.Message)) { result.Message = SystemMessage.SmsServiceError; } SessionManager.Captcha = ""; return(result); }
/// <summary> /// 寄送郵件 /// </summary> /// <param name="userID">user id</param> /// <param name="model">Mail內容取代字串</param> /// <param name="systemMailType">郵件類型</param> /// <param name="validType">驗證碼類型</param> /// <param name="structureID">郵件類型structure</param> /// <param name="fromFn">來源</param> /// <returns></returns> public async Task <CiResult> SendEmail(Guid userID, ReplaceMailContent model, SystemMailType systemMailType, ValidType?validType = null, Guid?structureID = null, string fromFn = "") { var result = new CiResult { IsSuccess = true }; var mailTool = new MailTool { email = model.UserEmail }; //ReplaceMailContent model.WebsiteUrl = RouteHelper.BaseUrl(); if (string.IsNullOrEmpty(model.UserName) || string.IsNullOrEmpty(model.UserEmail) || !_Check.IsEmail(model.UserEmail)) { result.IsSuccess = false; } //get setting if (result.IsSuccess) { var smtpResult = settingService.Get <SmtpServerViewModel>(SystemSettingType.SmtpServer); mailTool.setting = smtpResult.Data; if (!smtpResult.IsSuccess || !smtpResult.Data.IsEnabled) { result.IsSuccess = false; } } if (result.IsSuccess) { var siteResult = settingService.Get <SiteInfoViewModel>(SystemSettingType.SiteInfo); if (siteResult.IsSuccess) { model.WebsiteName = siteResult.Data.SiteName; } else { result.IsSuccess = false; } } //create validCode if (result.IsSuccess && validType != null) { var validCodeResult = userService.CreateValidCode(userID, validType.Value); if (validCodeResult.IsSuccess) { model.ConfirmUrl = RouteHelper.GetConfirmUrl(validType.Value, validCodeResult.Data, model.UserEmail); } else { result.IsSuccess = false; } } //get template var template = new cms_EmailTemplate(); if (result.IsSuccess) { template = templateService.GetByType(systemMailType, structureID); if (template != null) { // ckeditor template.Content = HttpUtility.HtmlDecode(template.Content); // set template mailTool.subject = model.ReplaceContent(template.Subject); mailTool.content = model.ReplaceContent(template.Content); if (!string.IsNullOrEmpty(template.TemplateBcc)) { mailTool.bccReceiver = template.TemplateBcc.Split(','); } } else { result.IsSuccess = false; _Log.CreateText($"SendEmail no template: {systemMailType.ToString()}"); } } //send mail (測試中:只能寄給開發者) if (result.IsSuccess) { if (!ApplicationHelper.IsLocal || (ApplicationHelper.IsLocal && mailTool.IsTestingMail(model.UserEmail))) { result.IsSuccess = await mailTool.SendAsync(fromFn); } else { _Log.CreateText($"Local not send: {mailTool.email}"); } //add log emailService.CreateLog(new EmailViewModel { Email = new cms_Email { Subject = mailTool.subject, Content = mailTool.content, SystemMailType = (int)systemMailType, Status = (int)MailStatus.Done, SendTime = DateTime.Now }, SendUsers = new List <cms_EmailSendUser> { new cms_EmailSendUser { ToEmail = model.UserEmail, ToUser = userID, IsSend = result.IsSuccess,//是否已發送 SendTime = DateTime.Now } } }); } if (result.IsSuccess) { if (systemMailType == SystemMailType.ConfirmEmail) { result.Message = string.Format(SystemMessage.EmailConfirm, model.UserEmail); } else if (systemMailType == SystemMailType.ForgotPassword) { result.Message = string.Format(SystemMessage.PasswordReset, model.UserEmail); } else { result.Message = SystemMessage.SendSuccess; } } else if (string.IsNullOrEmpty(result.Message)) { result.Message = SystemMessage.MailServerError; } SessionManager.Captcha = ""; return(result); }
public async Task <ActionResult> SignUp(SignUpViewModel model) { if (!Request.IsAjaxRequest()) { return(ErrorPage()); //404 } var result = new CiResult <Guid>(); //驗證碼 (外部登入不用) if (model.ExternalType != null) { if (SessionManager.ExternalLogin == null) { return(ErrorPage()); //404 } } else if (string.IsNullOrWhiteSpace(model.Captcha) || SessionManager.Captcha != model.Captcha) { result.Message = SystemMessage.CaptchaError; } //註冊Email會員 if (string.IsNullOrEmpty(result.Message)) { var newData = new UserViewModel { User = new mgt_User { Email = model.Email, Password = model.Password, Name = model.Name, Phone = model.Phone, Address = model.Address, //帳號類型&狀態 AccountType = (int)AccountType.Member, UserStatus = (int)UserStatus.OnVerify, }, LoginType = model.ExternalType != null ? (LoginType)model.ExternalType : LoginType.Email }; if (SessionManager.ExternalLogin != null) { newData.UserExternalLogin = new mgt_UserExternalLogin { ExternalType = (int)SessionManager.ExternalLogin.ExternalType, ExternalKey = SessionManager.ExternalLogin.ExternalKey }; } result = service.Create(newData, isExternalBinding: model.Email == SessionManager.ExternalLogin?.Email); } //寄Email驗證信 if (result.IsSuccess) { //clear SessionManager.FBstate = ""; SessionManager.Captcha = ""; SessionManager.ExternalLogin = null; //綁定成功, 不用重送驗證信 if (result.Message != SystemMessage.BindingSuccess) { var mailService = new MailService(ApplicationHelper.ClientID); var mailContent = new ReplaceMailContent { UserName = model.Name, UserEmail = model.Email }; var mailResult = await mailService.SendEmail(result.Data, mailContent, SystemMailType.ConfirmEmail, ValidType.ConfirmEmail, fromFn : "SignUp"); return(Json(mailResult)); } } return(Json(result)); }