/// <summary> /// 发送短信验证码 /// </summary> /// <param name="templateCode"></param> /// <param name="phoneNumber"></param> /// <param name="verifyCode"></param> /// <returns></returns> protected virtual async Task SendPhoneVerifyMessageAsync(string templateCode, string phoneNumber, string verifyCode) { var sendMessage = new SmsMessage(phoneNumber, "SendSmsMessage"); sendMessage.Properties.Add("code", verifyCode); sendMessage.Properties.Add("TemplateCode", templateCode); await SmsSender.SendAsync(sendMessage); }
public async Task Send_Test(string code) { var signName = Configuration["Aliyun:Sms:Sender:SignName"]; var phone = Configuration["Aliyun:Sms:Sender:PhoneNumber"]; var template = Configuration["Aliyun:Sms:Sender:TemplateCode"]; await SmsSender.SendAsync( signName, template, phone, new Dictionary <string, object> { { "code", code } }); }
public virtual async Task <IActionResult> OnPostAsync() { var user = await SignInManager.GetTwoFactorAuthenticationUserAsync(); if (user == null) { Alerts.Warning("双因素认证失败,用户未登录!"); return(Page()); } if (SendCodeInput.SelectedProvider == "Authenticator") { var verifyAuthenticatorCodeInput = new VerifyAuthenticatorCodeInputModel { ReturnUrl = SendCodeInput.ReturnUrl, RememberMe = SendCodeInput.RememberMe }; return(RedirectToPage("VerifyAuthenticatorCode", verifyAuthenticatorCodeInput)); } var code = await UserManager.GenerateTwoFactorTokenAsync(user, SendCodeInput.SelectedProvider); if (string.IsNullOrWhiteSpace(code)) { Alerts.Warning("验证码生成失败,请联系系统管理员!"); return(Page()); } var message = "Your security code is: " + code; if (SendCodeInput.SelectedProvider == "Email") { await EmailSender.SendAsync(await UserManager.GetEmailAsync(user), "Security Code", message); } else if (SendCodeInput.SelectedProvider == "Phone") { await SmsSender.SendAsync(await UserManager.GetPhoneNumberAsync(user), message); } var verifyCodeInput = new VerifyCodeInputModel { Provider = SendCodeInput.SelectedProvider, ReturnUrl = SendCodeInput.ReturnUrl, RememberMe = SendCodeInput.RememberMe }; return(RedirectToPage("VerifyCode", verifyCodeInput)); }
public async Task HandleAsync(HttpContext context) { var requestConfig = await Serializer.DeserializeStreamAsync <AppConfig>(context.Request.Body) .ConfigureAwait(false); // due to API limits, we may want to temporarily disable api requests if (requestConfig.PushBullet?.SkipSend is bool smsSend) { SmsSender.SkipSend = smsSend; } var skipYouTubeSend = requestConfig.YouTube?.SkipSend ?? Config.Value.YouTube?.SkipSend ?? throw new NullReferenceException(nameof(AppConfig.YouTube)); var pageCount = requestConfig.YouTube?.PageCount ?? Config.Value.YouTube?.PageCount ?? throw new NullReferenceException(nameof(AppConfig.YouTube)); var numbers = requestConfig.Numbers ?? Config.Value.Numbers ?? throw new NullReferenceException(nameof(AppConfig.Numbers)); var siteUri = requestConfig.SiteUri ?? Config.Value.SiteUri ?? throw new NullReferenceException(nameof(AppConfig.SiteUri)); var random = new Random(Guid.NewGuid().GetHashCode()); var videos = await GetVideoUrls(pageCount, skipYouTubeSend).ToArrayAsync().ConfigureAwait(false); var video = videos.RandomItem(); var message = $"{_greetings.RandomItem()}, {_names.RandomItem()}! Checkout this cool knife sharpening video!\n\n{video}"; var message2 = $"If you're tired of these messages, you can unsubscribe using this link: {siteUri}"; // send each message as a separate sms, rather than a single mms foreach (var number in numbers) { var result = await SmsSender.SendAsync(message, number).ConfigureAwait(false); await SmsSender.AwaitCompleteAsync(result).ConfigureAwait(false); // need a delay between SMS message or the second may not go through await Task.Delay(1000); await SmsSender.SendAsync(message2, number).ConfigureAwait(false); await Task.Delay(1000); } }
protected override async Task PublishAsync( NotificationInfo notification, IEnumerable <UserIdentifier> identifiers, CancellationToken cancellationToken = default) { if (!identifiers.Any()) { return; } var templateCode = notification.Data.TryGetData("TemplateCode"); if (templateCode == null) { Logger.LogWarning("sms template code is empty, can not send sms message!"); return; } var sendToPhones = await UserPhoneFinder.FindByUserIdsAsync(identifiers.Select(usr => usr.UserId), cancellationToken); if (!sendToPhones.Any()) { return; } var message = new SmsMessage(sendToPhones.JoinAsString(","), "SmsNotification"); // TODO: 后期增强功能,增加短信模板、通知模板功能 message.Properties.Add("TemplateCode", templateCode); message.Properties.Add("SignName", notification.Data.TryGetData("SignName")); foreach (var property in notification.Data.Properties) { // TODO: 可以扩展下存储短信模板,根据模板变量自动匹配 // 必须加上需要发送短信的前缀让用户自己选择是否发送短信,因为资费太贵了... if (property.Key.StartsWith(Options.TemplateParamsPrefix)) { message.Properties.Add(property.Key.Replace(Options.TemplateParamsPrefix, ""), property.Value); } } await SmsSender.SendAsync(message); }
public static void SendSmsUserThread(string smsTo, params string[] smsContent) { SmsSender.SendAsync(smsTo, "ReminderCode", smsContent); }
public virtual async Task <IActionResult> OnPostAsync() { var user = await SignInManager.GetTwoFactorAuthenticationUserAsync(); if (user == null) { Alerts.Warning(L["TwoFactorAuthenticationInvaidUser"]); return(Page()); } if (Input.SelectedProvider == "Authenticator") { // 用户通过邮件/短信链接进入授权页面 return(RedirectToPage("VerifyAuthenticatorCode", new { returnUrl = ReturnUrl, returnUrlHash = ReturnUrlHash, rememberMe = RememberMe })); } // 生成验证码 var code = await UserManager.GenerateTwoFactorTokenAsync(user, Input.SelectedProvider); if (string.IsNullOrWhiteSpace(code)) { Alerts.Warning(L["InvaidGenerateTwoFactorToken"]); return(Page()); } if (Input.SelectedProvider == "Email") { var appName = "MVC"; // TODO: 跟随Abp框架的意思变动 await AccountEmailVerifySender .SendMailLoginVerifyLinkAsync( user, code, appName, Input.SelectedProvider, RememberMe, ReturnUrl, ReturnUrlHash); } else if (Input.SelectedProvider == "Phone") { var phoneNumber = await UserManager.GetPhoneNumberAsync(user); var templateCode = await SettingProvider.GetOrNullAsync(AccountSettingNames.SmsSigninTemplateCode); Check.NotNullOrWhiteSpace(templateCode, nameof(AccountSettingNames.SmsSigninTemplateCode)); // TODO: 以后扩展短信模板发送 var smsMessage = new SmsMessage(phoneNumber, code); smsMessage.Properties.Add("code", code); smsMessage.Properties.Add("TemplateCode", templateCode); await SmsSender.SendAsync(smsMessage); } return(RedirectToPage("VerifyCode", new { provider = Input.SelectedProvider, returnUrl = ReturnUrl, returnUrlHash = ReturnUrlHash, rememberMe = RememberMe })); }