Java发送SMS:如何使用API库进行消息群发
发送SMS消息是现代Web应用程序、身份验证系统(2FA)、通知和营销推广中一项备受青睐的功能。在Java中,这需要使用与云API提供商交互的专业库。本文将介绍两个最流行的库:Twilio 和 Vonage(原Nexmo)。您将学习如何连接它们、发送第一条SMS以及处理可能出现的错误。
1. 为什么需要专门的SMS库?
直接通过HTTP请求处理SMS虽然可行,但并不方便。库提供了以下功能:
- 现成的类,用于创建和发送消息。
- 错误管理,以及在网络故障时的重试机制。
- 安全处理API密钥和令牌。
- 支持额外功能(投递状态、接收传入SMS)。
2. 用于Java的Twilio库
Twilio是市场领导者之一。其Java SDK(软件开发工具包)易于学习,并拥有出色的文档。
2.1 连接依赖项(Maven)
在 pom.xml 中添加以下代码块:
<dependency> <groupId>com.twilio.sdk</groupId> <artifactId>twilio</artifactId> <version>9.14.1</version> <!-- 请检查最新版本 --></dependency>2.2 通过Twilio发送SMS
发送消息的代码示例。请确保您拥有来自Twilio控制台的 Account SID 和 Auth Token,以及一个已购买的电话号码。
import com.twilio.Twilio;import com.twilio.rest.api.v2010.account.Message;import com.twilio.type.PhoneNumber;
public class SmsSender { // 设置您的凭据 public static final String ACCOUNT_SID = "您的_ACCOUNT_SID"; public static final String AUTH_TOKEN = "您的_AUTH_TOKEN";
public static void main(String[] args) { Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
Message message = Message.creator( new PhoneNumber("+71234567890"), // 接收方号码 new PhoneNumber("+19876543210"), // 您的Twilio号码 "来自Java和Twilio的问候!" ).create();
System.out.println("SMS已发送。SID: " + message.getSid()); }}重要提示: 电话号码必须采用国际格式(以+开头)。
3. 用于Java的Vonage(Nexmo)库
Vonage SMS API是另一个流行的选择。其库名为 nexmo-java 或 vonage-java-sdk。
3.1 连接依赖项(Gradle)
implementation 'com.vonage:client:7.3.0'对于Maven:
<dependency> <groupId>com.vonage</groupId> <artifactId>client</artifactId> <version>7.3.0</version></dependency>3.2 通过Vonage发送SMS
import com.vonage.client.VonageClient;import com.vonage.client.sms.MessageStatus;import com.vonage.client.sms.SmsSubmissionResponse;import com.vonage.client.sms.messages.TextMessage;
public class VonageSms { public static void main(String[] args) { VonageClient client = VonageClient.builder() .apiKey("您的_API_KEY") .apiSecret("您的_API_SECRET") .build();
TextMessage message = new TextMessage( "VonageAPI", // 发送方(最多11个字符) "+71234567890", // 接收方 "来自Java和Vonage的测试消息!" );
SmsSubmissionResponse response = clien