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

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): Guia completo para integração com API



No mundo moderno, as notificações por SMS continuam sendo uma das formas mais confiáveis de comunicação com o usuário. No ecossistema C# (.NET), existem várias abordagens para o envio de mensagens — desde requisições HTTP diretas até o uso de pacotes NuGet especializados. Neste artigo, vamos analisar como configurar o envio de SMS através de serviços populares (Twilio, sms.ru, Smsc) usando uma implementação pura com HttpClient, além de considerar uma biblioteca pronta para trabalhar com provedores russos.



Escolha da abordagem: biblioteca ou HTTP puro?

Para enviar SMS em C#, existem dois caminhos principais:

  • Uso do SDK oficial (por exemplo, Twilio para .NET) — oferece uma interface tipada, tratamento de erros integrado e documentação.
  • Trabalho direto com a API REST via HttpClient — controle total sobre a requisição, dependências mínimas, possibilidade de trabalhar com qualquer provedor.

A segunda opção é preferível para fins educacionais e projetos que exigem flexibilidade. Vamos analisá-la em detalhes.



Implementação básica de envio de SMS via API HTTP

Vamos criar a classe SmsService, que enviará mensagens através da API do sms.ru (ou qualquer outro serviço com formato semelhante).



using System;using System.Net.Http;using System.Threading.Tasks;

public class SmsService{ private readonly HttpClient _httpClient; private readonly string _apiKey;

public SmsService(string apiKey) { _httpClient = new HttpClient(); _apiKey = apiKey; }

public async Task<string> SendSmsAsync(string phone, string message) { var url = $"https://sms.ru/sms/send?api_id={_apiKey}&to={phone}&msg={Uri.EscapeDataString(message)}&json=1"; var response = await _httpClient.GetAsync(url); return await response.Content.ReadAsStringAsync(); }}


Uso:

var sms = new SmsService("SEU_CHAVE_API");string result = await sms.SendSmsAsync("+5511912345678", "Olá! Esta é uma mensagem de teste.");Console.WriteLine(result);


Otimização: assincronicidade e tratamento de erros

Em um projeto real, é necessário adicionar validação do número, tentativas repetidas em caso de falhas e registro de log. Versão melhorada:



public async Task<SmsResult> SendSmsAsync(string phone, string message){    try    {        if (string.IsNullOrWhiteSpace(phone) || phone.Length < 10)            return new SmsResult { Success = false, Error = "Formato de número inválido" };

var url = $"https://sms.ru/sms/send?api_id={_apiKey}&to={phone}&msg={Uri.EscapeDataString(message)}&json=1"; var response = await _httpClient.GetAsync(url); var json = await response.Content.ReadAsStringAsync();

// Parsing JSON (pode usar System.Text.Json) var result = JsonSerializer.Deserialize<SmsApiResponse>(json); return new SmsResult { Success = result?.Status == "OK", Response = json }; } catch (HttpRequestException ex) { return new SmsResult { Success = false, Error = $"Erro de rede: {ex.Message}" }; }}


Para fazer o parsing da resposta, crie um modelo simples:

public class SmsApiResponse{    public string Status { get; set; }    public int Balance { get; set; }}


Biblioteca pronta: Twilio para .NET

Se você precisa de algo pronto para produção, use o Twilio SDK (NuGet: Twilio). Exemplo:



using Twilio;using Twilio.Rest.Api.V2010.Account;

TwilioClient.Init("ACCOUNT_SID", "AUTH_TOKEN");

var message = MessageResource.Create( body: "Olá do C#!", from: new PhoneNumber("+1234567890"), to: new PhoneNumber("+5511912345678"));

Console.WriteL

Recommendations