如何使用Node.js不借助Twilio等服务商实现发送短信功能?
可以实现,但需要配套硬件/本地设备支撑
完全不用第三方短信服务商是可以实现的,但没法只靠纯服务端代码完成,必须搭配能控制你自身手机号收发短信的硬件/软件入口,常见可行方案如下:
方案1:搭配安卓手机作为短信发送终端
- 准备一台闲置安卓手机,插好你要用来发信的SIM卡,开启开发者调试权限
- 安卓端可以安装支持通过API接收指令发送短信的开源工具,也可以自己写个简单的安卓APP,监听本地服务端口收到的收件人、短信内容参数,调用系统短信接口完成发送
- 你的Node/Express服务端只要和这台安卓设备在同一个内网,或者给安卓设备配置内网穿透,服务端收到前端的发短信请求后,把参数转发到安卓端的监听接口即可
- 注意:安卓高版本系统会对非默认短信应用的发送行为做频率限制,频繁发送可能触发系统拦截,运营商也会对高频短信做风控,容易被锁卡
方案2:使用USB短信猫硬件
- 采购支持插SIM卡的USB短信猫设备,插在你部署Node/Express服务的服务器上
- 市面上大部分短信猫都支持AT指令控制,你可以在Node服务里用
serialport这类串口通信库,向短信猫发送AT指令完成短信发送操作 - 这种方案比用安卓手机更稳定,适合长期无人值守的场景,成本也不高,普通短信猫大概几十到几百块不等
方案3:对接运营商官方短信网关
- 如果你是企业用户,可以直接对接运营商的短信网关接口,不需要经过Twilio这类聚合服务商,直接调用运营商提供的API发送短信,不过这类对接一般有资质要求,个人用户很难申请
注意事项
- 所有不经过第三方短信服务商的方案,本质都是直接控制你名下SIM卡对应的通信设备发送短信,所有发送行为的合规责任都由你本人承担
- 不要用这种方式发送营销类、骚扰类短信,极容易被运营商判定为垃圾短信,导致SIM卡被停机,严重的还会承担合规风险
- 个人测试使用完全没问题,如果是商用场景,还是更建议使用合规的短信服务商,风控和到达率都更有保障
内容的提问来源于stack exchange,提问作者Maciej Monkiewicz
相关产品推荐
相关产品推荐

