当前位置: 首页 > news >正文

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

在当今的互联网项目中,短信验证码、通知等功能已成为标配。本文将详细介绍如何使用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.gsyq.cn/news/16788.html

相关文章:

  • 计算机网络物理层基础练习 - 详解
  • LGP9120 [NOIP 2022.5] 密码锁 学习笔记
  • 深入解析:C++ 内存泄漏检测器设计
  • 完整教程:数据结构:递归的种类(Types of Recursion)
  • 早期白板编程案例
  • 何夜无雨 - Ishar
  • D. Inversion Value of a Permutation edu div2
  • 一个刚大一的普通大学生
  • 教会音控组侍奉中的工序主义实践
  • 深度噪声抑制技术在语音增强中的突破
  • APUE学习笔记之UNIX标准及实现(二) - Invinc
  • 基于AXI模块的视频流传输(ps控制篇)
  • lora的各种变体
  • k8s pod启动失败困难排查
  • Python测试
  • Windows+VSCode搭建小智(xiaozhi)开发环境 - 教程
  • StarTree支持Apache Iceberg扩展湖仓用例
  • 偏微分方程的解
  • 如何在 HTML 中添加按钮 - 实践
  • Road Trip of the National Day holiday
  • 威尔逊定理的证明
  • WannaCry勒索病毒数字取证与安全监控实战指南
  • Azure DevOps 管道部署系列之一本地服务器 - 实践
  • 如何监测光伏系统中的电能质量挑战?分布式光伏电能质量解决方案
  • NFL统一数据生态系统技术架构解析
  • SP6950 CTOI10D3 - A HUGE TOWER 题解
  • JVM_XMS 和 java_opts哪种写法对?如何在JVM中设置JVM_XMS和java_opts?
  • 详细介绍:003 flutter初始文件讲解(2)
  • 详细介绍:关于ios点击分享自动复制到粘贴板的问题
  • 新一代数据平台替代传统大数据技术栈