在 JavaScript (Node.js) 中发送短信:API 库和实用示例
在现代世界中,短信通知仍然是联系用户最可靠的方式之一。无论是注册确认、双因素认证代码还是营销推送——能够以编程方式发送短信消息对于许多 Web 应用程序至关重要。在本文中,我们将探讨如何使用各种 API 和库在 JavaScript (Node.js) 中实现短信发送。
选择短信提供商并获取 API 密钥
第一步是选择用于发送短信的服务。有许多提供商,例如 Twilio、Nexmo (Vonage)、Amazon SNS、ClickSend 等。要开始使用,您需要:
- 在所选服务中注册。
- 充值余额或连接测试账户。
- 获取 API 密钥、SID 和访问令牌(每个提供商的术语不同)。
- 配置发送者 ID(Sender ID)——电话号码或字母名称。
安装必要的库
在 Node.js 中与短信提供商的 API 配合使用时,最常使用官方 SDK。我们以流行的服务 Twilio 和用于 HTTP 请求的通用库 axios 为例来介绍安装过程。
# 安装 Twilio 库npm install twilio
# 安装 axios 用于 REST API 请求npm install axios示例 1:通过 Twilio SDK 发送短信
Twilio 为 Node.js 提供了方便的 SDK。安装后,创建一个文件 send-sms.js 并添加以下代码:
const twilio = require('twilio');
// 您在 Twilio 控制台中的凭据const accountSid = process.env.TWILIO_ACCOUNT_SID;const authToken = process.env.TWILIO_AUTH_TOKEN;
const client = new twilio(accountSid, authToken);
async function sendSMS() { try { const message = await client.messages.create({ body: '你好!这是来自 Node.js 应用程序的测试短信。', from: '+1234567890', // 从 Twilio 获取的号码 to: '+79001234567' // 接收者号码 }); console.log('短信已发送。SID:', message.sid); } catch (error) { console.error('发送短信时出错:', error); }}
sendSMS();重要提示:切勿将密钥直接存储在代码中。请使用环境变量(.env 文件或系统设置)。
示例 2:通过通用 REST API 发送短信
如果您的提供商没有官方 SDK,您可以使用 axios 发送 POST 请求。我们以一个抽象的短信网关为例:
const axios = require('axios');
const API_URL = 'https://api.sms-provider.com/v1/send';const API_KEY = process.env.SMS_API_KEY;
async function sendSMSViaREST(phone, message) { try { const response = await axios.post(API_URL, { apiKey: API_KEY, phone: phone, text: message, sender: 'MyApp' // 发送者名称 }, { headers: { 'Content-Type': 'application/json' } }); console.log('服务器响应:', response.data); } catch (error) { console.error('错误:', error.response ? error.response.data : error.message); }}
// 使用示例sendSMSViaREST('+79001234567', '您的验证码: 1234');错误处理和投递状态
在处理短信时,务必考虑可能的错误:
- 无效号码——检查电话号码格式(国际格式,带 +)。
- 余额不足——监控账户余额。
- 提供商限制——某些运营商可能会阻止批量发送。
- 超时——使用错误处理机制。