C# 使用阿里云发送短信

最近有个项目,短信服务使用的是阿里云的,想要使用阿里云平台的短信服务,首先要注册一个阿里云账号,由于发送短信消息需要用到短信签名、短信模板ID(已添加并通过审核)

1、注册阿里云账号(地址:https://www.aliyun.com/)

2、添加短信签名和短信模板

3、短信服务相关引用dll

添加引用

引用——>管理NuGet程序包——>搜索Aliyun.Acs.Core——>安装

using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Exceptions;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Dysmsapi.Model.V20170525;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

编写发送短信的源代码

//产品名称:云通信短信API产品,开发者无需替换const String product = "Dysmsapi";//产品域名,开发者无需替换const String domain = "dysmsapi.aliyuncs.com";// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)const String accessKeyId = "xxxxx";const String accessKeySecret = "xxxx";public static SendSmsResponse sendSms(){IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);IAcsClient acsClient = new DefaultAcsClient(profile);SendSmsRequest request = new SendSmsRequest();SendSmsResponse response = null;try{//必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式request.PhoneNumbers = "189xxxx";//必填:短信签名-可在短信控制台中找到request.SignName = "小羽zzz";//必填:短信模板-可在短信控制台中找到request.TemplateCode = "SMS_65935167";//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为request.TemplateParam = "{\"code\":\"123\",\"product\":\"测试视频\"}";//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者request.OutId = "1712271051180713";//请求失败这里会抛ClientException异常response = acsClient.GetAcsResponse(request);}catch (ServerException e){Console.WriteLine(e.ErrorCode);}catch (ClientException e){Console.WriteLine(e.ErrorCode);}return response;
{//初始化acsClient,暂不支持region化IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);IAcsClient acsClient = new DefaultAcsClient(profile);//组装请求对象QuerySendDetailsRequest request = new QuerySendDetailsRequest();//必填-号码request.PhoneNumber = "xxxx";//可选-流水号request.BizId = bizId;//必填-发送日期 支持30天内记录查询,格式yyyyMMdd       request.SendDate = DateTime.Now.ToString("yyyyMMdd");//必填-页大小request.PageSize = 10;//必填-当前页码从1开始计数request.CurrentPage = 1;QuerySendDetailsResponse querySendDetailsResponse = null;try{querySendDetailsResponse = acsClient.GetAcsResponse(request);}catch (ServerException e){Console.WriteLine(e.ErrorCode);}catch (ClientException e){Console.WriteLine(e.ErrorCode);}return querySendDetailsResponse;}

调用

SendSmsResponse reponse = sendSms();Console.Write("短信发送接口返回的结果----------------");Console.WriteLine("Code=" + reponse.Code);Console.WriteLine("Message=" + reponse.Message);Console.WriteLine("RequestId=" + reponse.RequestId);Console.WriteLine("BizId=" + reponse.BizId);Console.WriteLine();Thread.Sleep(3000);if (reponse.Code != null && reponse.Code == "OK"){QuerySendDetailsResponse queryReponse = querySendDetails(reponse.BizId);Console.WriteLine("短信明细查询接口返回数据----------------");Console.WriteLine("Code=" + queryReponse.Code);Console.WriteLine("Message=" + queryReponse.Message);foreach (var  smsSendDetailDTO in queryReponse.SmsSendDetailDTOs){Console.WriteLine("Content=" + smsSendDetailDTO.Content);Console.WriteLine("ErrCode=" + smsSendDetailDTO.ErrCode);Console.WriteLine("OutId=" + smsSendDetailDTO.OutId);Console.WriteLine("PhoneNum=" + smsSendDetailDTO.PhoneNum);Console.WriteLine("ReceiveDate=" + smsSendDetailDTO.ReceiveDate);Console.WriteLine("SendDate=" + smsSendDetailDTO.SendDate);Console.WriteLine("SendStatus=" + smsSendDetailDTO.SendStatus);Console.WriteLine("Template=" + smsSendDetailDTO.TemplateCode);}}

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

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

相关文章

如果太阳系毁灭,这种神秘粒子就是真凶!

185年12月7日这一天,东汉中平二年乙丑,一位天文学家观测到天空出现了一颗极其明亮的星体,他并不知道这意味着什么。这颗突然出现于苍穹之中的星星在夜空中照耀了八个月后,又忽然消逝了。《后汉书天文志》中留下了这段记载&#xf…

Centos7 安装gitlab 8.7.5

简介:GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。1. Web框架使用Ruby on Rails。2. 基于MIT代码发布协议。3. 需要gitolite协同工作。安装要求:ruby 1.9.3MySQLgitgitoliteredis如果…

ocx c++

引用:http://www.baike.com/wiki/ocx ocx,使用它可以很快地在网址、台式应用程序、以及开发工具中加入特殊的功能。 编辑摘要目录 [ 隐藏 ]1 定义2 用途ocx - 定义 ActiveX控件.ActiveX控件是可重用的软件组件。 ocx - 用途 使用它可以很快地在网址、台式…

男人会为女人改变多少

男人会为女人改变多少 女人都想改造男人   从前有人说,女人征服男人,然后通过男人征服世界;而现在是女人改造男人,然后男人按照女人的意愿改造世界。女人喜欢男人,这八成是错不了的,但女人永远不满意男人…

Andorid之BINDSERVICE的使用方法总结

bindService用于绑定一个服务。这样当bindService(intent,conn,flags)后,就会绑定一个服务。这样做可以获得这个服务对象本身,而用startService(intent)的方法只能启动服务。 bindService方式的一般过程: ①新建Service类BindService。在BindService类里新建内部类MyBinder…

linux说明管道的作用,Linux管道及重定向的用途是什么

1、重定向在Linux中有时我们在命令的执行过程中,不想将执行结果显示到屏幕上,或者将其结果输出到其他位置这时就需要重定向来解决这个问题了首先了解一下Linux中的3种I/O设备:0:标准输入1:标准输出2:标准错…

磨刀不误砍柴工—Exceptionless搭配log4net记录日志

Exceptionless专注于.net平台提供实时错误和日志报告。主要包括:错误通知、智能分组异常、详细错误报告堆栈跟踪、支持离线、UI查看重要错误和确定优先级、仪表板上的统计信息和趋势、对异常标记为已修复,监视回归、将事件标记为关键等。主要是用于展示、…

豆瓣9.6分!再一次被BBC的纪录片震惊!

英国广播公司BBC的纪录片素来就是高质量的代名词,推出的《地球无限》(Planet Earth)、《地球的力量》(Earth The Power of the Planet)、《冷血生命》(Life In Cold Blood)等片不仅在英国播放时获得极高收视,还获得艾美奖等多个国际奖项的肯定&#xff0…

C++中事件机制的简洁实现

事件模型是被广泛使用的好东西,但是C标准库里没有现成的,其他实现又复杂或者不优雅,比如需要使用宏。现在VC11可以用在XP下了,那么就痛快的拿起C11提供的先进设施组合出一个轻便的实现吧。 为了达到简洁的目的,需要放弃…

监测京东商品价格波动

写着玩的,不用再去每天看要买的商品是否降价,如果降价就发布一条推文。 #!/usr/bin/env python # coding: utf-8 import tweepy import requests import re import sys import datetime import json # 京东的编码是gbk reload(sys) sys.setdefaultencodi…

Andorid之Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)的用法总结

在调试代码的时候我们需要查看调试信息,那我们就需要用Android Log类。 android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 。根据首字母对应VERBOSE,DEBUG,INFO, WARN,ERROR。 1、Log.v 的调…

SharePoint 2010 master page 控件介绍(5):其他

转&#xff1a;http://blog.csdn.net/lgm97/article/details/6409227 <!-- 处理搜索按下“enter”键和点击后退按钮 --> <input type"text" name"__spDummyText1" style"display:none;" size"1"/> <input type"te…

linux iotop rpm,iotop命令_Linux iotop 命令用法详解:用来监视磁盘I/O使用状况的工具...

iotop命令是一个用来监视磁盘I/O使用状况的top类工具。iotop具有与top相似的UI&#xff0c;其中包括PID、用户、I/O、进程等相关信息。Linux下的IO统计工具如iostat&#xff0c;nmon等大多数是只能统计到per设备的读写情况&#xff0c;如果你想知道每个进程是如何使用IO的就比较…

.NET 6新特性试用 | LINQ功能改进

前言.NET6为LINQ添加了多个新API&#xff0c;在本文中&#xff0c;我们将始终使用User类逐一演示这些添加到LINQ中的内容&#xff1a;public class User {public string Name { get; set; }public int Age { get; set; } }*By方法包括下列方法&#xff1a;DistinctBy: 根据指定…

VS2010下的多线程窗口

多线程的调试一直是一个令人蛋疼的问题&#xff0c;一般的解决方法是写Log。有的时候想要直观地看一下线程的运行状态&#xff0c;简直是困难。幸好vs2010给我们提供了一个多线程窗口。 使用方式&#xff1a; 1、按F5进入调试状态下 2、按图1所示打开多线程窗口 图1 打开多线程…

linux cp 强制yes,linux cp实现强制覆盖

说明&#xff1a;linux下使用cp -fr src dest&#xff0c;发现即使加了-f也是不能强行覆盖的&#xff0c;这是为什么呢&#xff1f;原因&#xff1a;-f其实已经会强制覆盖了&#xff0c;但部份服务器会默认增加别名alias cp’cp -i’&#xff0c;因此当你执行cp时&#xff0c;其…

第2天:汇编语言与Makefile

汇编语言指令 ORG&#xff1a;origin&#xff0c;指定程序从某个地址开始&#xff0c;即把程序装载到内存的某个地址。 如&#xff1a;ORG 0x7c00&#xff0c;0x7c00作为是英特尔指定的。JMP&#xff1a;jump&#xff0c;跳转指令。entry, msg, loop&#xff1a;自定义标签&…

Android之如何用cmd方法查看logcat

使用cmd命令查看logcat 使用adb logcat命令可查看android系统和应用的log adb logcat //显示全部日志 adb logcat > c:\test.log //将日志输出保存到文件test.log logcat日志中的优先级/tag标记: android输出的每一条日志都有一个标记和优先级与其关联。 优先级是下面的…

Typora 开始收费, 不妨试试这个开源免费的MD编辑器

相信大家很多人都已经知道了, 最好用最受欢迎的 markdown 编辑器 - Typora, 从 1.0.0 版本已经开始收费, 根据其官网的介绍, 收费方式为买断制, 也就是一次付费永久使用, 价格是14.99 刀, 另外支持支付宝付款, 89 元人民币, 最多支持3台设备使用, 对于我来说, 算上家里和公司的…