Envío de SMS en Java: revisión de bibliotecas API y herramientas

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Envío de SMS en Java: revisión de bibliotecas API y herramientas



El envío de mensajes SMS sigue siendo una tarea demandada en las aplicaciones web modernas: autenticación de dos factores, notificaciones, campañas de marketing. En Java, existen varias bibliotecas maduras y envoltorios API para este propósito. En este artículo, revisaremos los enfoques principales, las bibliotecas populares y proporcionaremos ejemplos prácticos de código.



Enfoques básicos para el envío de SMS

Todos los métodos de envío de SMS en Java se pueden dividir en dos grupos:

  • Interacción HTTP directa con la API del proveedor — envío de solicitudes HTTP (GET/POST) a servicios REST de pasarelas SMS (Twilio, Vonage/Nexmo, SMS-Центр, etc.).
  • Uso de bibliotecas especializadas — envoltorios Java listos que encapsulan las llamadas HTTP, la autenticación y el procesamiento de respuestas.


Bibliotecas y API populares para Java

Consideremos las tres opciones más comunes.



1. Twilio Java SDK

Twilio es uno de los líderes del mercado de comunicaciones en la nube. El SDK oficial de Java (com.twilio.sdk:twilio) proporciona una interfaz simple y type-safe.

Instalación (Maven):

<dependency>    <groupId>com.twilio.sdk</groupId>    <artifactId>twilio</artifactId>    <version>9.14.0</version></dependency>

Ejemplo de envío de SMS:

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 = "su_account_sid"; public static final String AUTH_TOKEN = "su_auth_token";

public static void main(String[] args) { Twilio.init(ACCOUNT_SID, AUTH_TOKEN); Message message = Message.creator( new PhoneNumber("+79261234567"), // número del destinatario new PhoneNumber("+15551234567"), // número del remitente (de Twilio) "¡Hola! Este es un SMS de prueba desde Java." ).create(); System.out.println("SID del mensaje: " + message.getSid()); }}


2. Vonage (anteriormente Nexmo) Java Client

Vonage proporciona un potente SDK de Java para enviar SMS y mensajes de voz. Soporta llamadas síncronas y asíncronas.

Instalación (Gradle):

implementation 'com.vonage:client:7.3.0'

Ejemplo de envío de 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("su_api_key") .apiSecret("su_api_secret") .build();

TextMessage message = new TextMessage( "VonageAPI", // remitente (hasta 11 caracteres) "79261234567", // destinatario "Prueba desde Java a través de Vonage" ); SmsSubmissionResponse response = client.getSmsClient().submitMessage(message); if (response.getMessages().get(0).getStatus() == MessageStatus.OK) { System.out.println("SMS enviado exitosamente."); } }}


3. Trabajo con pasarelas SMS a través de un cliente HTTP (OkHttp, Apache HttpClient)

Si prefiere el minimalismo y no quiere incluir SDK pesados, puede enviar solicitudes HTTP directamente a la API de cualquier proveedor de SMS (por ejemplo, sms.ru, smsc.ru).

Ejemplo con OkHttp para una pasarela hipotética:

import okhttp3.*;

public class HttpSmsSender { private static final String API_URL = "https://api.smsgateway.com/send"; private static final Str

Recommendations