完整教程:Go语言使用阿里云模版短信服务

news/2025/10/7 9:21:12/文章来源:https://www.cnblogs.com/yxysuanfa/p/19128193

在当今的互联网项目中,短信验证码、通知等功能已成为标配。本文将详细介绍如何使用Go语言集成阿里云短信服务(DYSMSAPI)实现短信发送功能。

一、准备工作

在开始之前,您需要完成以下准备工作:

  1. 注册阿里云账号并实名认证
  2. 开通短信服务(SMS)
  3. 申请短信签名和短信模板
  4. 获取AccessKey ID和AccessKey Secret

二、项目配置

首先创建一个新的Go项目,并添加阿里云SDK依赖:

go get github.com/aliyun/alibaba-cloud-sdk-go

三、代码实现

以下是完整的短信发送实现代码:

package main
import (
"fmt"
"github.com/aliyun/alibaba-cloud-sdk-go/services/dysmsapi"
"os"
)
func main(
) {
// 配置阿里云AccessKey
accessKeyId := "LTAI5tNjR26666666NTi5" // 替换为你的AccessKey ID
accessKeySecret := "2mFhAx4H666666661bMUyLxziCCqW" // 替换为你的AccessKey Secret
// 创建客户端
client, err := dysmsapi.NewClientWithAccessKey("cn-hangzhou"
, accessKeyId, accessKeySecret)
if err != nil {
fmt.Println("创建客户端失败:"
, err)
os.Exit(1
)
}
// 创建请求对象
request := dysmsapi.CreateSendSmsRequest(
)
request.Scheme = "https" // 使用HTTPS协议
// 设置请求参数
request.PhoneNumbers = "13467516788" // 接收短信的手机号码
request.SignName = "湖南XXXXXX有限公司" // 短信签名名称
request.TemplateCode = "SMS_275040510" // 短信模板ID
request.TemplateParam = `{"code":"1234"}` // 短信模板变量对应的实际值,JSON格式
// 发送短信
response, err := client.SendSms(request)
if err != nil {
fmt.Println("发送短信失败:"
, err)
os.Exit(1
)
}
// 处理响应
fmt.Printf("响应状态: %s\n"
, response.Code)
fmt.Printf("响应消息: %s\n"
, response.Message)
fmt.Printf("业务ID: %s\n"
, response.BizId)
fmt.Printf("请求ID: %s\n"
, response.RequestId)
}

四、代码解析

1. 客户端初始化

client, err := dysmsapi.NewClientWithAccessKey("cn-hangzhou"
, accessKeyId, accessKeySecret)

这里我们创建了一个阿里云短信服务的客户端,需要传入:

  • 区域ID(如cn-hangzhou)
  • AccessKey ID
  • AccessKey Secret

2. 请求参数设置

request := dysmsapi.CreateSendSmsRequest(
)
request.Scheme = "https" // 使用HTTPS协议
request.PhoneNumbers = "13467516757"
request.SignName = "湖南XXXXXX有限公司"
request.TemplateCode = "SMS_275040510"
request.TemplateParam = `{"code":"1234"}`

关键参数说明:

  • PhoneNumbers: 接收短信的手机号,多个号码用逗号分隔
  • SignName: 短信签名,需要在阿里云控制台申请并通过审核
  • TemplateCode: 短信模板ID,需要在控制台申请
  • TemplateParam: 模板变量,JSON格式

3. 发送请求与处理响应

response, err := client.SendSms(request)

发送请求后会返回响应对象,包含:

  • Code: 请求状态码,OK表示成功
  • Message: 状态码的描述
  • BizId: 发送回执ID,可用于查询发送状态
  • RequestId: 请求ID

五、常见问题

  1. 签名审核不通过:确保签名与营业执照名称一致
  2. 模板审核不通过:验证码模板必须包含"验证码"字样
  3. 错误码查询:参考阿里云官方文档中的错误码表

七、总结

通过阿里云SDK,我们可以轻松地在Go应用中集成短信发送功能。关键点包括:

希望本文能帮助你快速实现短信功能。如果有任何问题,欢迎在评论区留言讨论。

提示:在实际生产环境中,请妥善保管您的AccessKey,避免泄露造成安全风险。

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

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

相关文章

计算机网络物理层基础练习 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

KaTeX手册

前言。 这张表应该涵盖了纯\(\KaTeX\)所有的功能。当然,\(\LaTeX\)公式大全亦可作为部分参考。下面是搬运部分。受支持的功能 这是一张由\(\KaTeX\)支持的\(\TeX\)公式清单。他按照逻辑顺序分类。 这有一个相似的按照…

做网站要钱么西安百度推广运营

Vue 3 引入了两种新的响应式 API:ref 和 reactive。这两个 API 都用于创建响应式数据,但它们的使用场景和行为有所不同。 ref 用途:ref 用于创建基本数据类型的响应式引用,如字符串、数字、布尔值等。 使用方式:在模…

网站备案 接入商icp备案是网站上线前

钟表是一种计时的装置,也是计量和指示时间的精密仪器。钟表的样式千变万化,但是用来显示时间的表盘相差无几,大多数钟表表盘的样式由刻度(共60个,围成圆形)、指针(时针、分针和秒针)…

长沙的科技公司深圳网站建设网站排名优化

From:http://www.job168.com/info/read_87955.html 数据库的种类 大型数据库有:Oracle、Sybase、DB2、SQL server 小型数据库有:Access、MySQL、BD2等。 2007年4月29日消息,国外媒体报道,据权威调研机构IDC初步数据显示&#x…

Qt编写上下界面切换效果/前进到下一个界面/后退到上一个页面/零件工艺及管理设计系统

一、前言说明 上下切换界面的效果在网页上还是比较常见的,也就是后退可以切换到上一个打开的界面,前进可以切换到当前页面的下一个打开过的页面,如果没有上一个下一个则不切换,一般这种功能是一些年纪比较大的人常…

【题解】P1131 [ZJOI2007] 时态同步

P1131 [ZJOI2007] 时态同步 题目传送门题目大意: 给你一棵带边权的树,求出使所有叶节点到根节点的路程相同的最少操作数(每次操作边权加 1 )STEP 1. 看到这个题目后,我们就可以联想到一棵树了,具体来讲: \(n\) …

阿里云怎么做静态网站求一个免费的企业邮箱

验证电脑是否安装python 1.winr输入cmd 2.在黑窗口输入 python.exe 3.不是命令不存在就说明python环境安装完成 抓取快手视频 1.在phcharm应用中新建一个项目 3.新建一个python文件 4.选择python文件,随便起一个名字后按回车 5.安装requests pip install requests 6.寻找需要的…

电商网站设计是干什么的怎么开网店做代理

程序跑出下面的异常:com.ibm.websphere.ce.cm.DuplicateKeyException: ORA-00001: 违反唯一约束条件 (EOMS3.SYS_C0024492),参考下面的文章了解到我的程序可能是序列的问题。(果然是序列产生的最小值设置的太小,将序列值设置大之后…

LGP9120 [NOIP 2022.5] 密码锁 学习笔记

LGP9120 [NOIP 2022.5] 密码锁 学习笔记 洛谷链接 前言 这道 \(\text{LOCK}\) 是二三年春测的最后一道题。作为一道 \(\texttt{CNDS}\),因为随机化算法的存在而显得有点黯然失色。然而,将这道题对扫描线的(相对)复…

深入解析:OpenCV CUDA模块图像处理------创建CUDA加速的Canny边缘检测器对象createCannyEdgeDetector()

深入解析:OpenCV CUDA模块图像处理------创建CUDA加速的Canny边缘检测器对象createCannyEdgeDetector()pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

中小企业网站制作407网站后台管理系统进不去怎么办

MySQL单列索引是我们使用MySQL数据库中经常会见到的,MySQL单列索引和组合索引的区别可能有很多人还不是十分的了解,下面就为您分析两者的主要区别,供您参考学习。 为了形象地对比两者,再建一个表: CREATE TABLE myInde…

网站设计弹窗厦门seo外包公司

PS:基于一点小小兴趣,写了这篇笔记。 点构图 中心点构图 将主体放到画面中心。突出主体,但会显得有些平庸没有太出彩的地方,较为呆板。拍摄人物的话可以结合景色拍摄一些人物表达出明显情绪或者动作充满活力的姿态。 三分点构图…

机器人技术奖学金项目助力STEM教育发展

某机构机器人部门宣布2022年"第一天奖学金"14位获奖者,该项目支持来自 underrepresented 背景的学生攻读机器人、工程、计算机科学等领域的硕士学位,提供全额奖学金、实习机会和行业导师指导。机器人技术奖…

三、Sqoop 全量导入核心命令 - 实践

三、Sqoop 全量导入核心命令 - 实践2025-10-07 09:05 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !imp…

喀什做网站wordpress活动召集插件

spark的集群主要有三种运行模式standalone、yarn、mesos,其中常被使用的是standalone和yarn,本文了解一下什么是standalone运行模式,并尝试搭建一个standalone集群 一、standalone模式 standalone模式,是spark自己实现的&#xf…

手机怎么做优惠券网站怎么样黑进网站后台

----------------| 本文目录 |---------------- 1. 进程1.1 基本概念1.2 描述进程 - PCB1.2.1 task_struct - PCB的一种1.2.2 task_struct 内容分类 1.3 组织进程1.4 查看进程1.5 通过系统调用获取进程标示符1.6 通过系统调用创建进程 - fork初识 2. 进程状态2.1 看看Linux内核…

网站备案注销找哪个部门网站建设 阳江

时光飞逝,一转眼24年的第一个季度已经过去了,回望这3个多月,感触颇多。首先,24年从一个一心只读圣贤书,全身心投入在技术上的研发工程师,转变为一个团队的小leader。从我个人对自己的定位来说,我…

SAP ABAP 事务码 RZ12 里的 Max Number of WPs Used 参数的作用介绍

在 SAP 系统中,Max Number of WPs Used 参数在事务码 RZ12 中的 RFC 服务器组配置中扮演了非常关键的角色。这个参数定义了在该服务器组中可以使用的工作进程(Work Process, WP)的最大数量。工作进程是 SAP 系统中执…

中国煤炭建设协网站wordpress怎么装修网页

为什么要学习设计模式? 要知道设计模式就是软件工程的方法经验的总结,也是可以认为是过去一段时间软件工程的一个最佳实践,要理解,不要死记硬背。掌握这些方法后,可以让你的程序获得以下好处: 代码重用性…