Envio de SMS em C# (.NET): Integração com API de Serviços SMS
No mundo moderno, o envio de mensagens SMS continua sendo uma tarefa essencial para notificações, autenticação de dois fatores e alertas aos clientes. No ecossistema .NET não há uma biblioteca nativa para envio de SMS — todas as operações são realizadas por meio de requisições HTTP para APIs de provedores SMS terceiros. Neste artigo, vamos analisar como organizar o envio de SMS em C# usando HttpClient e ver exemplos de integração com serviços populares.
Escolha do provedor SMS e parâmetros principais
Antes de começar, é necessário se registrar em um dos serviços SMS. Os mais populares são: Twilio, Vonage (Nexmo), SMS Aero, СМСЦентр. Todos eles fornecem uma API REST. Para o envio, serão necessários:
- Chave de API / Token — identificador único da sua conta.
- Secret / Senha — chave secreta para autenticação.
- Número do remetente (Sender ID) — string que será exibida ao destinatário (por exemplo, sua marca).
- Número do destinatário — no formato internacional (ex.: +551234567890).
Implementação básica em C# com HttpClient
Para trabalhar com requisições HTTP no .NET, utiliza-se a classe System.Net.Http.HttpClient. Abaixo está um exemplo de envio de SMS via API Twilio (um dos serviços mais populares).
using System;using System.Net.Http;using System.Text;using System.Threading.Tasks;
public class SmsSender{ private readonly HttpClient _httpClient; private readonly string _accountSid; private readonly string _authToken;
public SmsSender(string accountSid, string authToken) { _accountSid = accountSid; _authToken = authToken; _httpClient = new HttpClient(); }
public async Task SendSmsAsync(string to, string from, string message) { // URL para a API Twilio string url = $"https://api.twilio.com/2010-04-01/Accounts/{_accountSid}/Messages.json";
// Monta os dados do formulário var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("To", to), new KeyValuePair<string, string>("From", from), new KeyValuePair<string, string>("Body", message) });
// Adiciona autenticação Basic string auth = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{_accountSid}:{_authToken}")); _httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", auth);
// Envia requisição POST HttpResponseMessage response = await _httpClient.PostAsync(url, content);
if (response.IsSuccessStatusCode) { string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine($"SMS enviado com sucesso: {responseBody}"); } else { string error = await response.Content.ReadAsStringAsync(); Console.WriteLine($"Erro: {response.StatusCode} - {error}"); } }}Uso da classe
class Program{ static async Task Main(string[] args) { // Substitua pelos seus dados do painel Twilio string accountSid = "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; string authToken = "your_auth_token_here";
var sender = new SmsSender(accountSid, authToken); await sender.SendSmsAsync( to: "+551234567890", from: "+15017122661", // número fornecido pelo Twilio message: "Olá! Este é um SMS de teste em C#." ); }}Provedores alternativos: exemplo com Vonage (Nexmo)
Para a API Vonage, utiliza-se um formato diferente
Também na biblioteca
Processamento de imagens em Kotlin: resize e crop com a biblioteca Kamel
Trabalhando com Apache Kafka em Swift (iOS/macOS): bibliotecas e exemplos
Internacionalização (i18n) em Rust: melhores bibliotecas e práticas