Envío de SMS en C# (.NET): Integración con API de servicios SMS a través de HttpClient

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Envío de SMS en C# (.NET): Integración con API de servicios SMS



En el mundo moderno, el envío de mensajes SMS sigue siendo una tarea demandada para notificaciones, autenticación de dos factores y alertas a clientes. En el ecosistema .NET no hay una biblioteca integrada para enviar SMS; todas las operaciones se realizan a través de solicitudes HTTP a las API de proveedores de SMS externos. En este artículo, analizaremos cómo organizar el envío de SMS en C# usando HttpClient y veremos ejemplos de integración con servicios populares.



Selección del proveedor de SMS y parámetros clave

Antes de comenzar, es necesario registrarse en uno de los servicios de SMS. Los más populares son: Twilio, Vonage (Nexmo), SMS Aero, СМСЦентр. Todos proporcionan una API REST. Para enviar, necesitará:

  • Clave API / Token — identificador único de su cuenta.
  • Secreto / Contraseña — clave secreta para la autenticación.
  • Número del remitente (Sender ID) — cadena que se mostrará al destinatario (por ejemplo, su marca).
  • Número del destinatario — en formato internacional (por ejemplo, +71234567890).


Implementación básica en C# con HttpClient

Para trabajar con solicitudes HTTP en .NET se utiliza la clase System.Net.Http.HttpClient. A continuación se muestra un ejemplo de envío de SMS a través de la API de Twilio (uno de los servicios más 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 la API de Twilio string url = $"https://api.twilio.com/2010-04-01/Accounts/{_accountSid}/Messages.json";

// Formamos los datos del formulario var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("To", to), new KeyValuePair<string, string>("From", from), new KeyValuePair<string, string>("Body", message) });

// Añadimos autenticación Basic string auth = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{_accountSid}:{_authToken}")); _httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", auth);

// Enviamos la solicitud POST HttpResponseMessage response = await _httpClient.PostAsync(url, content);

if (response.IsSuccessStatusCode) { string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine($"SMS enviado exitosamente: {responseBody}"); } else { string error = await response.Content.ReadAsStringAsync(); Console.WriteLine($"Error: {response.StatusCode} - {error}"); } }}


Uso de la clase

class Program{    static async Task Main(string[] args)    {        // Reemplace con sus datos del panel de Twilio        string accountSid = "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";        string authToken = "your_auth_token_here";

var sender = new SmsSender(accountSid, authToken); await sender.SendSmsAsync( to: "+71234567890", from: "+15017122661", // número asignado por Twilio message: "¡Hola! Este es un SMS de prueba desde C#." ); }}


Proveedores alternativos: ejemplo con Vonage (Nexmo)

Para la API de Vonage se utiliza un formato diferente

Recommendations