我可以绕过 SMS 提供商和移动运营商并直接向 phone 个号码发送 SMS 吗?

Can I bypass SMS Providers and Mobile Operators and send SMSs directly to phone numbers?

我是发送 SMS 的新手,我需要构建一个不需要与任何 SMS 提供商或移动运营商集成的 SMS 网关。不过,不知道可不可以。

有人推荐了两个他们声称能够做到这一点的库。这些库基于 SMPP。以下是链接:

Inetlab.SMPP JamaaSMPP

但是,根据我对 SMS 的了解,我认为不可能绕过提供商和运营商直接向 phone 号码发送 SMS。如果我记错了请告诉我。

提前致谢

phone 号码存储在服务提供商中,它就像是 IMSI 的符号link link。 IMSI 是 SIM 卡的代码(唯一)。如果没有提供商或服务将 IMSI 转换为 phone 号码,您将无法处理 SMS。

但是,如果您知道 IMSI 号码,则可以使用带有 GSM 或 LTE 堆栈的 SDR(在无线电范围内)发送 SMS。为此,您需要查看您所在国家/地区的法律。

如果您不想与任何 SMS 提供商或 API 集成,只需使用连接到 PC 的移动 phone 或 GS​​M 调制解调器发送 SMS。这是使用 AT 命令完成的。 AT 命令是用于控制调制解调器的指令。 AT是注意的缩写。每个命令行都以 "AT" 或 "at" 开头。

发送 SMS 的示例 AT 命令如下所示。

AT
OK
AT+CMGF=1
OK
AT+CMGW="+85291234567"
> A simple demo of SMS text messaging.
+CMGW: 1

OK
AT+CMSS=1
+CMSS: 20

OK

这是一个带有 send/receive SMS 示例代码的应用程序。 https://www.codeproject.com/Articles/38705/Send-and-Read-SMS-through-a-GSM-Modem-using-AT-Com

阅读本文以了解更多使用 PC 发送短信的方法。 https://www.developershome.com/sms/howToSendSMSFromPC.asp

没有集成是不可能的。想一想……在某些时候,您的消息必须注入移动网络才能路由到用户的 phone。这要求您在该移动网络上有连接或网关。如果没有某种集成,消息就无法进入网络。

主要有三个选项

  1. 使用提供商的 SMS 网关。许多提供商都有公开可用的 SMS 网关,可以路由消息 to/from 他们的客户。您将消息发送到他们的网关,他们存储和路由消息。将其视为邮件服务器,在许多情况下实际上是这样,因为网关经常处理 SMTP 流量。您需要跟踪用户的 phone 号码和运营商,并将他们输入的运营商数据映射到 SMS 网关以进行传送。运营商数量有限,但是您需要做好准备,让用户在您从未听说过的运营商上出现 phone - 所以疯狂地争先恐后地查找运营商的端点。

  2. 使用您自己的 SMS 网关设备。这是一种硬件(通常连接 LAN),其中包含您所在地区的一个或多个移动网络提供商提供的一张或多张 SIM 卡。您将消息发送到您的网关,它使用运营商的正常 SMS 服务将 SMS 发送给您的收件人。如果您愿意,可以将其视为可编程单元 phone。每张 SIM 卡都受您与供应商协议规定的定价和限制的约束,您实际上是在为短信套餐付费。

  3. 使用聚合器。这可能是您被要求避免的选项。聚合器将 运行 一个类似于上述选项的平台。仔细查看您计划发送和接收的消息数量。许多聚合器对每条消息的收费低于 0.01 美元。对于小批量来说,这可能会节省大量成本,而对于大批量来说,这可能是一笔巨大的开支。这是他们为企业所做的,因此托管服务很可能比您自己酿造的任何东西都要好。

存在其他变体,但最基本的部分是您需要有进入移动网络的途径,因此您必须以某种方式与它们集成。

有一种解决方法,但它不是 "SMS" 可以这么说,而是彩信,并且是 solution/workaround 我正在为一个小型教堂应用程序开发。您可以经常向 phone 发送电子邮件,您只需要知道运营商的域,我相信某处有一个列表。例如:619123456@tmomail.net.

警告:有些人可能会产生费用,事情可能会被封锁,并不是所有的运营商都有这种能力,但这都是法律部门的事情,我不会涉及。