Отправка SMS на Java: Обзор и примеры использования API библиотек (Twilio, Nexmo)

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Отправка SMS на Java: Как использовать API библиотеки для рассылки сообщений

Отправка SMS-сообщений — востребованная функция в современных веб-приложениях, системах авторизации (2FA), уведомлениях и маркетинговых рассылках. В Java для этого используются специализированные библиотеки, которые взаимодействуют с облачными API провайдеров. В этой статье мы рассмотрим две самые популярные библиотеки: Twilio и Vonage (бывший Nexmo). Вы узнаете, как подключить их, отправить первое SMS и обработать возможные ошибки.

1. Зачем нужна отдельная библиотека для SMS?

Работа с SMS напрямую через HTTP-запросы возможна, но неудобна. Библиотеки предоставляют:

  • Готовые классы для создания и отправки сообщений.
  • Управление ошибками и повторные попытки при сбоях сети.
  • Безопасную работу с API-ключами и токенами.
  • Поддержку дополнительных функций (статусы доставки, получение входящих SMS).

2. Библиотека Twilio для Java

Twilio — один из лидеров рынка. Его Java SDK (Software Development Kit) прост в освоении и имеет отличную документацию.

2.1 Подключение зависимости (Maven)

Добавьте в pom.xml следующий блок:

<dependency>
    <groupId>com.twilio.sdk</groupId>
    <artifactId>twilio</artifactId>
    <version>9.14.1</version> <!-- Проверьте актуальную версию -->
</dependency>

2.2 Отправка SMS через Twilio

Пример кода для отправки сообщения. Убедитесь, что у вас есть Account SID и Auth Token из консоли Twilio, а также купленный номер телефона.

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. Библиотека Vonage (Nexmo) для Java

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 Отправка SMS через Vonage

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 = client.getSmsClient().submitMessage(message);

        if (response.getMessages().get(0).getStatus() == MessageStatus.OK) {
            System.out.println("SMS отправлено успешно!");
        } else {
            System.out.println("Ошибка: " + response.getMessages().get(0).getErrorText());
        }
    }
}

В отличие от Twilio, Vonage позволяет задать имя отправителя (до 11 латинских символов), что удобно для брендов.

4. Сравнение библиотек

Критерий

Рекомендаций