Envio de SMS em Java: Como usar bibliotecas API para envio de mensagens
O envio de mensagens SMS é uma função muito requisitada em aplicações web modernas, sistemas de autenticação (2FA), notificações e campanhas de marketing. Em Java, são utilizadas bibliotecas especializadas que interagem com APIs em nuvem de provedores. Neste artigo, veremos duas das bibliotecas mais populares: Twilio e Vonage (antiga Nexmo). Você aprenderá como conectá-las, enviar o primeiro SMS e tratar possíveis erros.
1. Por que é necessária uma biblioteca separada para SMS?
Trabalhar com SMS diretamente por meio de requisições HTTP é possível, mas inconveniente. As bibliotecas oferecem:
- Classes prontas para criar e enviar mensagens.
- Gerenciamento de erros e novas tentativas em caso de falhas de rede.
- Trabalho seguro com chaves de API e tokens.
- Suporte a funções adicionais (status de entrega, recebimento de SMS recebidos).
2. Biblioteca Twilio para Java
Twilio é um dos líderes do mercado. Seu Java SDK (Software Development Kit) é fácil de aprender e possui excelente documentação.
2.1 Conexão da dependência (Maven)
Adicione o seguinte bloco ao pom.xml:
<dependency> <groupId>com.twilio.sdk</groupId> <artifactId>twilio</artifactId> <version>9.14.1</version> <!-- Verifique a versão mais recente --></dependency>2.2 Envio de SMS via Twilio
Exemplo de código para enviar uma mensagem. Certifique-se de ter o Account SID e o Auth Token do console do Twilio, além de um número de telefone adquirido.
import com.twilio.Twilio;import com.twilio.rest.api.v2010.account.Message;import com.twilio.type.PhoneNumber;
public class SmsSender { // Defina suas credenciais public static final String ACCOUNT_SID = "SEU_ACCOUNT_SID"; public static final String AUTH_TOKEN = "SEU_AUTH_TOKEN";
public static void main(String[] args) { Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
Message message = Message.creator( new PhoneNumber("+71234567890"), // Número do destinatário new PhoneNumber("+19876543210"), // Seu número Twilio "Olá do Java e Twilio!" ).create();
System.out.println("SMS enviado. SID: " + message.getSid()); }}Importante: Os números de telefone devem estar no formato internacional (começando com +).
3. Biblioteca Vonage (Nexmo) para Java
A API SMS da Vonage é outra escolha popular. Sua biblioteca é chamada nexmo-java ou vonage-java-sdk.
3.1 Conexão da dependência (Gradle)
implementation 'com.vonage:client:7.3.0'Para Maven:
<dependency> <groupId>com.vonage</groupId> <artifactId>client</artifactId> <version>7.3.0</version></dependency>3.2 Envio de SMS via 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("SUA_API_KEY") .apiSecret("SEU_API_SECRET") .build();
TextMessage message = new TextMessage( "VonageAPI", // Remetente (até 11 caracteres) "+71234567890", // Destinatário "Mensagem de teste do Java e Vonage!" );
SmsSubmissionResponse response = clien