Envio de SMS em C# (.NET): Visão Geral de Bibliotecas e API
No desenvolvimento moderno em C# (.NET), surge frequentemente a necessidade de integrar notificações por SMS: confirmação de registro, autenticação de dois fatores, alertas sobre status de pedidos ou simplesmente envio em massa. Neste artigo, analisaremos três abordagens populares para enviar SMS a partir de aplicações em C#: uso dos serviços em nuvem Twilio, Vonage (antigo Nexmo) e do serviço russo SMSC.ru. Todos os exemplos de código são escritos para .NET 6/8 e utilizam métodos assíncronos modernos.
1. Envio de SMS via Twilio (provedor global)
Twilio é um dos serviços mais populares para envio de SMS, mensagens de voz e outras comunicações. Possui excelente documentação e um pacote NuGet oficial.
Instalação da biblioteca
Adicione o pacote através do Gerenciador de Pacotes NuGet ou execute o comando:
dotnet add package TwilioExemplo de envio de SMS em C#
using Twilio;using Twilio.Rest.Api.V2010.Account;using Twilio.Types;
public class SmsService{ // Informe o Account SID e o Auth Token do console do Twilio private readonly string _accountSid = "SEU_ACCOUNT_SID"; private readonly string _authToken = "SEU_AUTH_TOKEN"; private readonly string _fromPhone = "+1234567890"; // Número adquirido no Twilio
public async Task<bool> SendSmsAsync(string toPhone, string message) { TwilioClient.Init(_accountSid, _authToken);
try { var msg = await MessageResource.CreateAsync( body: message, from: new PhoneNumber(_fromPhone), to: new PhoneNumber(toPhone) ); Console.WriteLine($"SMS enviado! SID: {msg.Sid}"); return true; } catch (Exception ex) { Console.WriteLine($"Erro: {ex.Message}"); return false; } }}Importante: O número do remetente deve ser verificado na sua conta Twilio. Para contas de teste, os SMS são enviados apenas para números verificados.
2. Envio de SMS via Vonage (antigo Nexmo)
Vonage é outro poderoso provedor de nuvem. Sua API é simples e o pacote é facilmente instalado via NuGet.
Instalação da biblioteca
dotnet add package VonageExemplo de envio de SMS
using Vonage;using Vonage.Request;using Vonage.Messaging;
public class VonageSmsService{ private readonly string _apiKey = "SUA_API_KEY"; private readonly string _apiSecret = "SEU_API_SECRET"; private readonly string _from = "YourApp"; // Nome do remetente
public async Task<bool> SendSmsAsync(string toPhone, string message) { var credentials = Credentials.FromApiKeyAndSecret(_apiKey, _apiSecret); var client = new VonageClient(credentials);
var request = new SendSmsRequest { To = toPhone, From = _from, Text = message };
var response = await client.SmsClient.SendAnSmsAsync(request);
if (response.Messages[0].Status == "0") { Console.WriteLine($"SMS enviado! ID: {response.Messages[0].MessageId}"); return true; } else { Console.WriteLine($"Erro: {response.Messages[0].ErrorText}"); return false; } }}Nota: Para enviar para números russos, pode ser necessária configuração adicional do alfa-nome.
3. Envio de SMS via SMSC.ru (serviço russo)
Se o seu público está principalmente na Rússia e nos países da CEI, o SMSC.ru pode ser uma opção mais conveniente e barata. Não é necessária biblioteca — basta uma requisição HTTP.