我正在使用Golang SMPP协议发送短信。消息发送成功,但收件人手机上显示的源地址为“未知地址”。
这是我的代码 -- main.go
package main
import (
"log"
"github.com/fiorix/go-smpp/smpp"
"github.com/fiorix/go-smpp/smpp/pdu/pdufield"
"github.com/fiorix/go-smpp/smpp/pdu/pdutext"
)
func main() {
tx := &smpp.Transmitter{
Addr: "server:port",
User: "userId",
Passwd: "password",
}
// Create persistent connection, wait for the first status.
conn := <-tx.Bind()
if conn.Status() != smpp.Connected {
log.Fatal(conn.Error())
}
sm, err := tx.Submit(&smpp.ShortMessage{
Src: "MyCompany",
Dst: "25*********",
Text: pdutext.Raw("Sample sms"),
Register: pdufield.NoDeliveryReceipt,
})
if err != nil {
log.Fatal(err)
}
log.Println("Message ID:", sm.RespID())
}
-- go.mod
module sms
go 1.21.0
require github.com/fiorix/go-smpp v0.0.0-20210403173735-2894b96e70ba
require golang.org/x/text v0.3.6 // indirect
我遵循的示例:https://pkg.go.dev/github.com/fiorix/go-smpp/smpp#example-Transmitter
根据 SMPP 规范,源地址(通常称为“发件人 ID”)最多可包含 11 个字母数字字符。您的示例中的字符串“MyCompany”比允许的长度长,这可能会导致问题。
尝试使用较短的字母数字字符串作为源地址:
sm, err := tx.Submit(&smpp.ShortMessage{
Src: "MyCo",
Dst: "25*********",
Text: pdutext.Raw("Sample sms"),
Register: pdufield.NoDeliveryReceipt,
})