.net之阿里云短信服务集成

news/2025/1/5 17:30:14/文章来源:https://www.cnblogs.com/inclme/p/18650202

概念

集成阿里云短信服务

引用阿里云包

封装AliyunSmsClient(二次封装阿里云短信基类)

   public class AliyunSmsClient{private readonly Client _client;private readonly AliyunSmsOptions _options;public AliyunSmsClient(IOptions<AliyunSmsOptions> options){_options = options.Value;_client = new Client(new Config(){AccessKeyId = _options.AccessKeyId,AccessKeySecret = _options.AccessKeySecret,Endpoint = "dysmsapi.aliyuncs.com"});}public SendSmsResponse Send(SendSmsRequest req){if (!string.IsNullOrEmpty(_options.SignName))req.SignName = _options.SignName;return _client.SendSms(req);}public async Task<SendSmsResponse> SendAsync(SendSmsRequest req){if (!string.IsNullOrEmpty(_options.SignName))req.SignName = _options.SignName;return await _client.SendSmsAsync(req);}}

封装参数构造类AliyunSmsSendRequestBuilder

   public class AliyunSmsSendRequestBuilder{private readonly SendSmsRequest _request;private readonly List<string> _phones;private readonly Dictionary<string, object> _templateParams;public AliyunSmsSendRequestBuilder(string templateCode){_request = new SendSmsRequest();_request.TemplateCode = templateCode;_phones = new List<string>();_templateParams = new Dictionary<string, object>();}public AliyunSmsSendRequestBuilder AddPhone(IEnumerable<string> phones) => AddPhone(phones.ToArray());public AliyunSmsSendRequestBuilder AddPhone(params string[] phones){_phones.AddRange(phones);return this;}public AliyunSmsSendRequestBuilder AddSignName( string signName){_request.SignName = signName;return this;}       public AliyunSmsSendRequestBuilder AddTemplateParam(string key, object value){_templateParams.Add(key, value);return this;}public SendSmsRequest Build(){_request.PhoneNumbers = string.Join(",", _phones.Distinct());_request.TemplateParam = JsonConvert.SerializeObject(_templateParams as dynamic);return _request;}}

封装初始化参数类AliyunSmsOptions

   public class AliyunSmsOptions{public string AccessKeyId { get; set; }public string AccessKeySecret { get; set; }public string SignName { get; set; }}

封装服务扩展静态类ServiceCollectionExtensions

 public static class ServiceCollectionExtensions{public static IServiceCollection AddAliyunSms(this IServiceCollection services, Action<AliyunSmsOptions> setup){services.Configure(setup);services.AddSingleton<AliyunSmsClient>();return services;}}

.net6中使用

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAliyunSms((op) =>
{builder.Configuration.Bind("BPA:AliyunSms", op);
});

参数参考

    "AliyunSms": {"AccessKeyId": "参考Key","AccessKeySecret": "参考Secret","SignName": "参考"},

项目打包推送至nuget仓库

打包传送门 https://www.cnblogs.com/inclme/p/16053978.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/863408.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Petalinux ARM设置自启动、自动加载驱动、自动挂载SD卡

一、在工程路径下新建app petalinux-create -t apps --template install -n myapp-init --enablepetalinux会在metausr目录下新建一个目录,结构如下 project-spec/meta-user/recipes-apps/myapp-init/ ├── files │ └── myapp-init ├── myapp-init.bb └── READM…

希捷移动硬盘开盘数据恢复之台州客户8T硬盘磁头突发损坏无法识别

这是一块8T的希捷3.5寸移动硬盘,浙江台州的老客户寄过来的,描述说是在公司正常使用的时候突然有异响,然后就不识别了,自己进行换数据线、换电脑等操作简单的排除了一下,确定是硬盘的故障,然后就联系我们中心邮寄过来进行数据恢复。收到硬盘后打开外壳,里面是一块型号为S…

云行 | “智”绘首都发展新篇章,天翼云携手伙伴共创“京”彩未来!

12月12日,以“智耀京华 焕新领航”为主题的天翼云中国行北京站活动圆满落幕。12月12日,以“智耀京华 焕新领航”为主题的天翼云中国行北京站活动圆满落幕。北京市经济和信息化局副局长刘维亮,中国电信股份有限公司北京分公司总经理寇凤达,天翼云科技有限公司助理总经理宫梅…

智能驾驶整车在环实验室SYNO解决方案

汽车行业智能化、网联化的发展趋势对智能网联车辆的测试验证手段提出了更高的要求。作为国内最早开展整车在环仿真测试技术预研的企业之一,经纬恒润从2016年开始整车在环仿真相关技术的预研工作。整车在环实现了从半实物仿真到机械混合仿真的跨步,将功能测试与性能测试整合,…

mac m3安装window11

1、安装虚拟机,本文使用vmware fusion13.6.2 软件下载地址 官网:https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion 1️⃣点击下载入口,跳转页面需要账号,没有账号可以走注册。正常按流程走注册即可 2️⃣登录进入,找到my downloads,点击下拉菜…

【linux合集】新开终端发现所有命令都无法执行。。。

场景描述: 在登录到机器的时候发现出现大量的command not found的情况,几乎无法执行除了export cd以外的所有命令,几乎无法执行所有命令的情况很无奈,然后发现可以执行history查看历史命令,随后通过history了解在此之前有操作过环境变量,这时候就在考虑是不是环境变量的情…

1.机械运动

1.1 长度和时间的测度 长度的单位及换算单位 表示 示例 备注米 m 100m 国际单位制 基本单位千米 km 1km 1km=1000m厘米 dm 10dm 10dm=1m厘米 cm 100cm 100cm=1m毫米 mm 10mm 10mm=1cm微米 μm 1000μm 1000μm=1mm纳米 nm 1000nm 1000nm=1μm刻度尺的认识及使用顺序 内容 操作要…

基于RRT优化算法的机械臂路径规划和避障matlab仿真

1.课题概述基于RRT优化算法的机械臂路径规划和避障,先通过RRT优化算法,计算避障路线,然后将机械臂根据规划好的路径进行移动。2.系统仿真结果 3.核心程序与模型 版本:MATLAB2022a% 结尾添加终点 Path_sm=cat(1,Path_sm,xyz2);subplot(133); scatter3(xyz1(1),xyz1(2),xyz…

【新兴产业】未来显示

产业链 上游为各种组零件,包括制程设备、核 心材料及关键配件; 中游为面板及模组生产,包括面板 制造及模组组装; 下游为终端产品,包括手机、VR/AR、 可穿戴设备、车载显示、平板/电脑、激光投影等。 未来显示产业的发展重点领域包括MLED技术、全柔性 AMOLED面板、超高清视…

【新兴产业】未来网络

产业链 未来网络是以用户为中心的新一代互联网基础设施,通过引入新一代信息技术推动基础网络架构创新,重点解决网络海量连接、质量 确定、服务可定制等关键问题,在全球范围内赋能制造、航天、能源等产业发展。 产业链上游主要是为未来网络建设提供必需基础设 施或条件的企业…

ASE10N10-ASEMI中低压N沟道MOS管ASE10N10

ASE10N10-ASEMI中低压N沟道MOS管ASE10N10编辑:ll ASE10N10-ASEMI中低压N沟道MOS管ASE10N10 型号:ASE10N10 品牌:ASEMI 封装:TO-252 最大漏源电流:10A 漏源击穿电压:100V 批号:最新 RDS(ON)Max:130mΩ 引脚数量:3 沟道类型:N沟道MOS管 芯片尺寸:MIL 漏电流: 恢复时…

【新兴产业】生物制造

产业链 包括DNA测序、基因合成和编辑等上游技术赋能企业以及创新药、精细化学品、生物能源等下游应用企业。 当前中国生物制造领域的产业模式主要是校企合作,高校和科研院所承担着重要的平台角色功能。高校和研究所在模式底盘细胞的开发及驯化、基础菌种研发方面提供支持,为具…