Envio de SMS em C# (.NET): Integração com API de Serviços SMS via HttpClient

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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

Recommendations