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

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

圆点
&lt;p&gt;&lt;img title="使用Go语言调用短信接口发送验证码短信教程(图1)" alt="使用Go语言调用短信接口发送验证码短信教程(图1)" src="/uploads/allimg/20240526/1-240526211424213.jpeg"/&gt;&lt;/p&gt; &lt;p&gt;短信验证码在注册、登录、找回密码这些场景里用得很多。这篇文章讲怎么用 Go 调用短信接口,发送验证码短信。&lt;/p&gt; &lt;h2&gt;设置 Go 开发环境&lt;/h2&gt; &lt;p&gt;先确认电脑上装好了 Go 语言环境,配置好 GOPATH 和 GOROOT。在终端里输入 &lt;code&gt;go version&lt;/code&gt; 能检查是否安装成功。&lt;/p&gt; &lt;h2&gt;获取接口参数&lt;/h2&gt; &lt;p&gt;登录智慧云信官网,选择对应的产品(如【验证码】),在上方选项卡中点击【开发者】→【HTTP开发文档】,就能看到具体的 API 方法名称,以及各参数的 key 和对应值,通常包括 &lt;code&gt;sp_id&lt;/code&gt;、&lt;code&gt;mobile&lt;/code&gt;、&lt;code&gt;content&lt;/code&gt;、&lt;code&gt;password&lt;/code&gt; 等。各参数含义如下:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;code&gt;sp_id&lt;/code&gt;:产品编号,全局唯一,一般由 6 位数字组成。&lt;/li&gt;&lt;li&gt;&lt;code&gt;mobile&lt;/code&gt;:接收短信的手机号码。&lt;/li&gt;&lt;li&gt;&lt;code&gt;content&lt;/code&gt;:短信内容,包含签名和正文。例如“【智慧云信】您的验证码是456790,请妥善保管”,其中【智慧云信】是签名,需在签名报备中申请;后面的提示语是短信模板,需在模板报备中申请,审核通过后才能发送。&lt;/li&gt;&lt;li&gt;&lt;code&gt;password&lt;/code&gt;:用 SP_ID 密码经 MD5 加密后生成的接口密码(非登录密码),由 32 位随机字符串组成。&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;编写 Go 代码&lt;/h2&gt; &lt;p&gt;下面是一个用 Go 发送短信的示例程序:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;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, &amp;amp;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, &amp;amp;ext) if err != nil { fmt.Println(err) } else { fmt.Println(result) } }&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;注意:代码里的 &lt;code&gt;md5Hash&lt;/code&gt; 是演示用的假设函数,实际项目要用 Go 自带的加密库或第三方库实现 MD5 计算。&lt;/p&gt; &lt;h2&gt;运行与测试&lt;/h2&gt; &lt;p&gt;代码写完就可以运行测试。测试前确认 &lt;code&gt;sp_id&lt;/code&gt;、&lt;code&gt;mobile&lt;/code&gt;、&lt;code&gt;password&lt;/code&gt;(或 &lt;code&gt;signature&lt;/code&gt;)等参数已填对。发送成功的话,控制台会显示“短信发送成功”和返回的 &lt;code&gt;msg_id&lt;/code&gt;;失败则显示错误信息。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;其他语言教程:&lt;/strong&gt;&lt;a href="https://www.3yit.com/smsapi/262.html" title="PHP短信接口教程"&gt;PHP&lt;/a&gt; · &lt;a href="https://www.3yit.com/smsapi/282.html" title="Java短信接口教程"&gt;Java&lt;/a&gt; · &lt;a href="https://www.3yit.com/smsapi/283.html" title="ASP短信接口教程"&gt;ASP&lt;/a&gt; · &lt;a href="https://www.3yit.com/smsapi/284.html" title="ASP.NET(C#)短信接口教程"&gt;ASP.NET(C#)&lt;/a&gt; · &lt;a href="https://www.3yit.com/smsapi/285.html" title="JSP短信接口教程"&gt;JSP&lt;/a&gt; · &lt;a href="https://www.3yit.com/smsapi/286.html" title="Node.js短信接口教程"&gt;Node.js&lt;/a&gt; · &lt;a href="https://www.3yit.com/smsapi/298.html" title="Delphi短信接口教程"&gt;Delphi&lt;/a&gt; · &lt;a href="https://www.3yit.com/smsapi/301.html" title="Python短信接口教程"&gt;Python&lt;/a&gt; · &lt;a href="https://www.3yit.com/smsapi/302.html" title="Ruby短信接口教程"&gt;Ruby&lt;/a&gt; · &lt;a href="https://www.3yit.com/smsapi/303.html" title="Shell短信接口教程"&gt;Shell&lt;/a&gt; · &lt;a href="https://www.3yit.com/smsapi/304.html" title="VB短信接口教程"&gt;VB&lt;/a&gt; · &lt;a href="https://www.3yit.com/smsapi/305.html" title="C++短信接口教程"&gt;C++&lt;/a&gt; · &lt;a href="https://www.3yit.com/smsapi/306.html" title="C短信接口教程"&gt;C&lt;/a&gt;。更多信息见&lt;a href="https://www.3yit.com/smsapi/613.html" title="短信API接入指南"&gt;短信API接入指南&lt;/a&gt;。&lt;/p&gt; <p>代码里的 API 地址、账号和密码替换成你自己的就能跑通。如果还没有账号,去智慧云信官网注册一个,注册就能免费测试,验证码、通知、营销短信都支持。</p>
内容可信度说明

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

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

最后更新:2026-08-13

本文主题:使用Go语言调用短信接口发送验证码短信教程

本文围绕「使用Go语言调用短信接口发送验证码短信教程」展开,结合智慧云信平台在短信接口API场景下的产品能力与客户接入经验整理。不同国家/地区的 Sender ID、模板审核、计费方式和合规要求可能变化,实际发送前建议以当前通道审核与项目沟通结果为准。