使用 Golang SMPP 协议发送短信时出错:未知地址

问题描述 投票:0回答:1

我正在使用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

go sms smpp
1个回答
0
投票

根据 SMPP 规范,源地址(通常称为“发件人 ID”)最多可包含 11 个字母数字字符。您的示例中的字符串“MyCompany”比允许的长度长,这可能会导致问题。

尝试使用较短的字母数字字符串作为源地址:

sm, err := tx.Submit(&smpp.ShortMessage{
    Src:      "MyCo",
    Dst:      "25*********",
    Text:     pdutext.Raw("Sample sms"),
    Register: pdufield.NoDeliveryReceipt,
})
© www.soinside.com 2019 - 2024. All rights reserved.