Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > go语言发送短信

go语言实现短信发送实例探究

作者:github

这篇文章主要为大家介绍了go语言实现短信发送实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

特点

平台支持

目前支持

环境需求

安装

$ go get github.com/pkg6/go-sms

使用

package main
import (
    gosms "github.com/pkg6/go-sms"
    "github.com/pkg6/go-sms/gateways"
    "github.com/pkg6/go-sms/gateways/twilio"
)
func main() {
    sms := gosms.NewParser(gateways.Gateways{Twilio: twilio.Twilio{AccountSID: "ACd********", AuthToken: "***********", TwilioPhoneNumber: "+1********"}})
    // 常规
    sms.Send(18888888888, gosms.MapStringAny{
        "content":  "您的验证码是:****。请不要把验证码泄露给其他人。",
        "template": "SMS_001",
        "data": gosms.MapStrings{
            "code": "6379",
        },
    }, nil)
}

短信内容

由于使用多网关发送,所以一条短信要支持多平台发送,每家的发送方式不一样,但是我们抽象定义了以下公用属性:

所以,在使用过程中你可以根据所要使用的平台定义发送的内容。

sms.Send(18888888888, gosms.MapStringAny{
    "content":  "您的验证码是:****。请不要把验证码泄露给其他人。",
    "template": "SMS_001",
    "data": gosms.MapStrings{
        "code": "6379",
    },
}, nil)

你也可以使用闭包来返回对应的值:

sms.Send(18888888888, gosms.MapStringAny{
    "content": func(gateway gosms.IGateway) string {
        return "您的验证码是:****。请不要把验证码泄露给其他人。"
    },
    "template": func(gateway gosms.IGateway) string {
        if gateway.GetName() == "aliyun" {
            return "TP2818"
        }
        return "SMS_001"
    },
    "data": func(gateway gosms.IGateway) gosms.MapStrings {
        return map[string]string{
            "code": "1234",
        }
    },
}, nil)

发送网关

默认使用初始化中的网关发送,如果某一条短信你想要覆盖默认的设置。在 send 方法中使用第三个参数即可:

sms := gosms.NewGateways(twilio.GateWay("ACd********", "***********", "+1***********"))
sms.Send(18888888888, gosms.MapStringAny{
    "content": "您的验证码是:****。请不要把验证码泄露给其他人。",
}, nil)

自定义网关

本拓展已经支持用户自定义网关,你可以很方便的配置即可当成与其它拓展一样的使用:

sms := gosms.NewGateways()
sms.Extend("aliyun", aliyun.GateWay("accessKeyId", "accessKeySecret"))
sms.Send(18888888888, gosms.MapStringAny{
    "content": "您的验证码是:****。请不要把验证码泄露给其他人。",
}, []string{"aliyun"})

自定义网关实现接口

// IGateway 网关
type IGateway interface {
    // I 用于初始化默认值
    I() IGateway
    // GetName 网关名称
    GetName() string
    // Send 发送操作
    Send(to IPhoneNumber, message IMessage) (SMSResult, error)
}

通过Sender函数去发送

package main
import (
    "fmt"
    gosms "github.com/pkg6/go-sms"
    "github.com/pkg6/go-sms/gateways/twilio"
)
func main() {
    gateway := twilio.GateWay("ACd********", "********", "+1111111")
    var message = gosms.MessageContent("Hello from Twilio")
    number := gosms.CHNPhoneNumber(18888888888)
    result, err := gosms.Sender(number, message, gateway)
    if resp, ok := result.ClientResult.Response.(twilio.Response); ok {
        fmt.Println(resp)
    }
    fmt.Println(err)
}

总结

以上就是go语言实现短信发送实例探究的详细内容,更多关于go语言发送短信的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文