智慧云信

使用Go语言调用短信接口发送验证码短信教程

Go语言对接验证码短信接口DEMO示例

圆点

使用Go语言调用短信接口发送验证码短信教程(图1)

短信验证码在注册、登录、找回密码这些场景里用得很多。这篇文章讲怎么用 Go 调用短信接口,发送验证码短信。

设置 Go 开发环境

先确认电脑上装好了 Go 语言环境,配置好 GOPATH 和 GOROOT。在终端里输入 go version 能检查是否安装成功。

获取接口参数

登录智慧云信官网,选择对应的产品(如【验证码】),在上方选项卡中点击【开发者】→【HTTP开发文档】,就能看到具体的 API 方法名称,以及各参数的 key 和对应值,通常包括 sp_idmobilecontentpassword 等。各参数含义如下:

  • sp_id:产品编号,全局唯一,一般由 6 位数字组成。
  • mobile:接收短信的手机号码。
  • content:短信内容,包含签名和正文。例如“【智慧云信】您的验证码是456790,请妥善保管”,其中【智慧云信】是签名,需在签名报备中申请;后面的提示语是短信模板,需在模板报备中申请,审核通过后才能发送。
  • password:用 SP_ID 密码经 MD5 加密后生成的接口密码(非登录密码),由 32 位随机字符串组成。

编写 Go 代码

下面是一个用 Go 发送短信的示例程序:

package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"net/url"
"strconv"
"time"
)
// 假设的MD5计算函数(需要您自己实现或使用第三方库)
func md5Hash(text string) string {
// 实现MD5计算逻辑...
// 这里只是返回一个示例值
return "example_md5_hash"
}
// 发送短信的函数
func sendSMS(spID, mobile, content, password, signature string, ext *string) (string, error) {
// 设置请求参数
params := url.Values{}
params.Set("sp_id", spID)
params.Set("mobile", mobile)
params.Set("content", content)
// 根据需要选择使用password或signature
if password != "" {
params.Set("password", md5Hash(password))
} else if signature != "" {
params.Set("signature", signature)
}
if ext != nil {
params.Set("ext", *ext)
}
// 发送POST请求
resp, err := http.PostForm("https://api.3yit.com/api/send-sms-single", params)
if err != nil {
return "", err
}
defer resp.Body.Close()
// 读取响应内容
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return "", err
}
// 解析JSON响应
var result map[string]interface{}
err = json.Unmarshal(body, &result)
if err != nil {
return "", err
}
// 检查响应状态
code := result["code"].(float64)
if code != 0 {
msg := result["msg"].(string)
return msg, fmt.Errorf("短信发送失败: %s", msg)
}
// 返回成功信息
msgID := result["msg_id"].(string)
return "短信发送成功,msg_id: " + msgID, nil
}
func main() {
// 假设的参数值
spID := "5xxxxx"
mobile := "176xxxxxxxx"
content := "【签名】验证码" + strconv.Itoa(int(time.Now().Unix()%1000000))
password := "xxxxxxxxxxx" // 或者使用signature
signature := "" // 如果使用password,则signature为空
ext := "123" // 可选参数
// 调用发送短信函数
result, err := sendSMS(spID, mobile, content, password, signature, &ext)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(result)
}
}

注意:代码里的 md5Hash 是演示用的假设函数,实际项目要用 Go 自带的加密库或第三方库实现 MD5 计算。

运行与测试

代码写完就可以运行测试。测试前确认 sp_idmobilepassword(或 signature)等参数已填对。发送成功的话,控制台会显示“短信发送成功”和返回的 msg_id;失败则显示错误信息。

其他语言教程:PHP · Java · ASP · ASP.NET(C#) · JSP · Node.js · Delphi · Python · Ruby · Shell · VB · C++ · C。更多信息见短信API接入指南

代码里的 API 地址、账号和密码替换成你自己的就能跑通。如果还没有账号,去智慧云信官网注册一个,注册就能免费测试,验证码、通知、营销短信都支持。

内容可信度说明

作者:智慧云信通信技术团队

技术审核:国际短信与号码检测产品组

最后更新:2026-08-13

适用范围:国际短信、国际验证码短信、国际语音筛单、空号检测、号码实时检测等出海通信与号码检测场景。

本文结合智慧云信平台产品能力、客户接入问题和通道运营经验整理。不同国家/地区的 Sender ID、模板审核、计费方式和合规要求可能变化,实际发送前建议以当前通道审核与项目沟通结果为准。