This is a powerful open-source library for sending SMS message, which will help you to easily integrate with the popular SMS providers. And it has been applied to Casdoor, if you still don’t know how to use it after reading README.md, you can refer to it.
We support the following SMS providers, welcome to contribute.
- Twilio
- Amazon SNS
- Azure ACS
- GCCPAY
- Infobip
- SUBMAIL
- SmsBao
- Alibaba Cloud
- Tencent Cloud
- Baidu Cloud
- VolcEngine
- Huawei Cloud
- UCloud
- Huyi
- Netgsm
- Oson Sms
Use go get
to install:
go get github.com/casdoor/go-sms-sender
Different SMS providers need to provide different configuration, but we support a unit API as below to init and get the SMS client.
func NewSmsClient(provider string, accessId string, accessKey string, sign string, template string, other ...string) (SmsClient, error)
provider
the name of SMS provider, such asAliyun SMS
accessId
accessKey
sign
the sign nametemplate
the template codeother
other configuration
After initializing the SMS client, we can use the following API to send message.
SendMessage(param map[string]string, targetPhoneNumber ...string) error
param
the parameters in the SMS template, such as 6 random numberstargetPhoneNumber
the receivers, such as+8612345678910
Please get necessary information from Twilio console
package main
import "github.com/casdoor/go-sms-sender"
func main() {
client, err := go_sms_sender.NewSmsClient(go_sms_sender.Twilio, "ACCOUNT_SID", "AUTH_TOKEN", "", "TEMPLATE_CODE")
if err != nil {
panic(err)
}
params := map[string]string{}
params["code"] = "123456"
phoneNumer := "+8612345678910"
err = client.SendMessage(params, phoneNumer)
if err != nil {
panic(err)
}
}
Before you begin, you need to sign up for an Aliyun account and retrieve your Credentials.
package main
import "github.com/casdoor/go-sms-sender"
func main() {
client, err := go_sms_sender.NewSmsClient(go_sms_sender.Aliyun, "ACCESS_KEY_ID", "ACCESS_KEY_SECRET", "SIGN_NAME", "TEMPLATE_CODE")
if err != nil {
panic(err)
}
params := map[string]string{}
params["code"] = "473956"
phoneNumer := "+8612345678910"
err = client.SendMessage(params, phoneNumer)
if err != nil {
panic(err)
}
}
package main
import "github.com/casdoor/go-sms-sender"
func main() {
client, err := go_sms_sender.NewSmsClient(go_sms_sender.TencentCloud, "secretId", "secretKey", "SIGN_NAME", "TEMPLATE_CODE", "APP_ID")
if err != nil {
panic(err)
}
params := map[string]string{}
params["0"] = "473956"
phoneNumer := "+8612345678910"
err = client.SendMessage(params, phoneNumer)
if err != nil {
panic(err)
}
}
- yourAccessId: is KullaniciAdi
- yourAccessKey: is Sifre
- yourSign: is Baslik
package main
import "github.com/casdoor/go-sms-sender"
func main() {
client, err := go_sms_sender.NewSmsClient(go_sms_sender.Netgsm, "yourAccessId", "yourAccessKey", "yourSign", "yourTemplate")
if err != nil {
panic(err)
}
params := map[string]string{}
params["param1"] = "value1"
params["param2"] = "value2"
phoneNumer := "+8612345678910"
err = client.SendMessage(params, phoneNumer)
if err != nil {
panic(err)
}
}
- senderId: is
login
- secretAccessKey: is
hash
- signName: is
from
- templateCode: is
message
package main
func main() {
client, err := go_sms_sender.NewSmsClient(go_sms_senderOsonSms, "senderId", "secretAccessKey", "signName", "templateCode")
if err != nil {
panic(err)
}
params := map[string]string{}
params["code"] = "123456"
phoneNumer := "+992123456789"
err = client.SendMessage(params, phoneNumer)
if err != nil {
panic(err)
}
}
To run tests for the go-sms-sender
library, navigate to the root folder of the project in your terminal and execute the following command:
go test -v ./...
you can modify mock_test.go file to mock an other tests
This project is licensed under the Apache 2.0 license.