求推荐短信服务商,API有Go代码示例的

在做注册通过手机收验证码,找了一圈短信服务商,API都木有Golang代码示例,求前辈推荐服务商和相关开源代码,谢谢!

共 9 个回复


jimmykuu

右侧的『容联·云通讯』就可以,不过官方没提供,自己写也就五六十行代码。

这是我们的,你参考下:

// 云通讯短信请求
type ReqBody struct {
    To         string   `json:"to"`
    AppId      string   `json:"appId"`
    TemplateId string   `json:"templateId"`
    Datas      []string `json:"datas,omitempty"`
}

// 构建云通讯短信请求
func newSmsRequest(mobile, verifyCode string) *http.Request {
    now := time.Now().Format("20060102150405")
    sigParameter := calcSigParameter(now)

    url := fmt.Sprintf("%s/2013-12-26/Accounts/%s/SMS/TemplateSMS?sig=%s", baseUrl, accountSid, sigParameter)

    b, _ := json.Marshal(ReqBody{
        To:         mobile,
        AppId:      appId,
        TemplateId: "1",
        Datas:      []string{verifyCode, "10"},
    })

    request, _ := http.NewRequest("POST", url, bytes.NewReader(b))
    request.Header.Set("Accept", "application/json")
    request.Header.Set("Content-Type", "application/json; charset=utf-8")
    request.Header.Set("Content-Length", fmt.Sprintf("%d", len(b)))
    request.Header.Set("Authorization", calcAuthorization(now))

    return request
}

func calcSigParameter(now string) string {
    h := md5.New()
    io.WriteString(h, accountSid+authToken+now)
    sign := fmt.Sprintf("%x", h.Sum(nil))

    return strings.ToUpper(sign)
}

func calcAuthorization(now string) string {
    return base64.StdEncoding.EncodeToString([]byte(accountSid + ":" + now))
}

// 云通讯响应
type RespBody struct {
    StatusMsg   string      `json:"statusMsg"`
    StatusCode  string      `json:"statusCode"`
    TemplateSMS interface{} `json:"TemplateSMS"`
}

// 解析云通讯响应
func parseSmsResp(resp *http.Response) (RespBody, error) {
    var data RespBody
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        return data, err
    }

    err = json.Unmarshal(body, &data)
    if err != nil {
        return data, err
    }

    return data, nil
}

使用:

// 发送短信
    request := newSmsRequest("13488888888", "123456")

    client := &http.Client{}
    resp, err := client.Do(request)
    if err != nil {
        // 处理错误
    }
    defer resp.Body.Close()

    data, err := parseSmsResp(resp)
    if err != nil || data.StatusCode != "000000" {
        // 处理错误
    }
# 0

yue

太赞了,非常感谢站长的无私代码,这就去注册!谢谢!


可惜不适合个人:

若使用短信则开发者类型一定要选择公司

# 1

transtone

老大发代码不发全,
: undefined: baseUrl
: undefined: appId
: undefined: accountSid
: undefined: authToken

===============
不是说自己配很难,只是说有不完美的地方。

当然了,确实挺赞的,可以申请放入云通信的SDK中去。

# 2

jimmykuu

这些变量自定义一下就可以了,都是云通讯的配置参数。

# 3

jlj000

谁说没有啊,我现在用的就有GO的sdk下载包啊,是第三方平台啊。平台叫submail,中文名称叫赛邮这是官网,你自己看http://submail.cn/

# 4

jlj000

不好意思,看错楼主的意思了,是要代码示例吧。submail上有的,具体链接http://submail.cn/sms

# 5

xj2532

赛邮云通信支持go代码。SUBMAIL GO SDK

下载
SUBMAIL_GO_SDK_MAIL_AND_MESSAGE_WITH_ADDRESSBOOK

邮件、短信和地址薄

下载

# 6

chuanlong

我一直用submail 短信平台,用的效果很不错,而且也有go语言,建议你去看一下。

# 7