So erstellen Sie eine Werbekampagne mit RCS und SendGrid in C#

March 31, 2026
Autor:in:
Prüfer:in:

KI-generierte Zusammenfassung
  • Mit RCS und SendGrid gestalten Sie eine einheitliche Marketingkampagne über mehrere Kanäle.
  • Nutzen Sie RCS für interaktive Nachrichten und SendGrid für automatisierte E-Mails.
  • Binden Sie beide Dienste in eine .NET-Anwendung ein und sprechen Sie Ihre Kunden kanalübergreifend einheitlich an.

Diese Zusammenfassung wurde mithilfe von KI erstellt.

So erstellen Sie eine Werbekampagne mit RCS und SendGrid in C#

Im Jahr 2026 ist es schwieriger denn je, die Aufmerksamkeit Ihrer Kunden zu gewinnen und langfristig zu halten. Eine Werbekampagne besteht nicht nur aus einer einzelnen SMS oder E-Mail. Entscheidend ist vielmehr das abgestimmte Zusammenspiel verschiedener Kanäle. SMS und E-Mail sind zwei Möglichkeiten, Marketingbotschaften an Kunden zu übermitteln. Mit aufeinander abgestimmten E-Mail-Vorlagen und RCS-Inhalten sorgen Sie über beide Kanäle hinweg für einen einheitlichen Marketingauftritt.

In diesem kurzen Tutorial erfahren Sie, wie Sie Twilio SendGrid und RCS mit .NET 10 kombinieren, um eine kanalübergreifend einheitliche Marketingkampagne umzusetzen. Sie erfahren, wie Sie E-Mails und RCS-Nachrichten mithilfe aufeinander abgestimmter Vorlagen zu einer einheitlichen Kundenansprache verbinden. Einführung

Was ist RCS?

RCS-Karten sind interaktive Nachrichten mit Rich Media. RCS erweitert herkömmliche SMS um Funktionen wie markenspezifische und verifizierte Absender-IDs, Titel, Bilder und interaktive Inhalte. So entstehen ansprechendere Nachrichten, mit denen Empfänger direkt interagieren können.

Wenn Sie noch nicht mit RCS gearbeitet haben, erfahren Sie in unserem Artikel RCS vs. SMS, wie sich die beiden Messaging-Kanäle unterscheiden.

RCS-Nachrichten sind nur auf kompatiblen Geräten und in Netzen unterstützter Netzbetreiber verfügbar. Unterstützt das Gerät des Empfängers kein RCS, sendet Twilio automatisch die im Abschnitt twilio/text der Vorlage definierte Fallback-SMS.

Was ist SendGrid?

SendGrid ist die E-Mail-Versandplattform von Twilio. Mit SendGrid können Sie wirkungsvolle E-Mail-Marketingkampagnen einfach gestalten, automatisieren und versenden. Sie können Ihre Kampagnen mit einfachen Triggern automatisieren und Drag-and-Drop-Vorlagen einrichten, die das Erstellen von Marketing-E-Mails erleichtern.

Für kanalübergreifende Marketingkampagnen ergänzen sich die beiden Dienste besonders gut:

  • RCS (Rich Communication Services): RCS kann deutlich mehr als klassische SMS. RCS unterstützt hochauflösende Karussells, Schaltflächen mit vorgeschlagenen Antworten und ein verifiziertes Absender-Branding. Damit eignet es sich besonders gut, um unmittelbare Interaktionen auszulösen.
  • SendGrid: E-Mails bieten mehr Raum für ausführliche Inhalte und Storytelling. Hat das Bild in der RCS-Nachricht Interesse geweckt, können Sie per E-Mail den vollständigen Katalog und mehr über die Marke präsentieren.

Unsere RCS-/SendGrid-Kampagne erstellen

Für den Einstieg benötigen Sie Folgendes:

  • ein Twilio-Konto (hier können Sie sich registrieren)
  • ein SendGrid-Konto (Sie können dasselbe Twilio-Konto verwenden)
  • eine Twilio-Telefonnummer, über die Sie SMS als Fallback für den RCS-Dienst senden können
  • ein Gerät, das RCS-Nachrichten empfangen kann
  • das auf Ihrem Entwicklungsrechner installierte .NET Framework

RCS-Sender einrichten

Dieses Tutorial baut auf So senden Sie eine RCS-Nachricht mit C# .NET und Twilio auf. Dort erfahren Sie anhand einer ausführlichen Anleitung mit Screenshots, wie Sie einen RCS-Sender einrichten. Richten Sie für dieses Tutorial zunächst wie gezeigt den RCS-Sender im Twilio RCS Dashboard ein. Dafür benötigen Sie ein Logo für den RCS-Sender sowie ein Gerät zum Testen. Richten Sie das Gerät als RCS-Tester ein, damit Sie auch die weiteren Schritte des Tutorials testen können.

Dynamische SendGrid-Vorlage einrichten

Erstellen Sie in SendGrid eine dynamische Vorlage, die auf Ihre RCS-Nachricht abgestimmt ist. Melden Sie sich im SendGrid-Dashboard an und navigieren Sie zu Email API > Dynamic Templates. Geben Sie einen aussagekräftigen Namen für die Vorlage ein und klicken Sie auf Create. Mit der dynamischen Vorlage können Sie programmgesteuert dieselbe Vorlagenstruktur für die RCS-Nachricht und die dazu passende SendGrid-E-Mail verwenden. Klicken Sie auf Create a Dynamic Template. Wählen Sie einen einprägsamen Namen für die Vorlage und fahren Sie fort.

Nachdem Sie die Vorlage erstellt haben, klicken Sie auf den Pfeil neben dem Namen, um den Bearbeitungsbereich zu öffnen. Dort finden Sie die Template ID. Notieren Sie sich diese ID. Sie benötigen sie später für die Anwendung, die Ihre E-Mails versendet.

Um die Vorlage weiter einzurichten, wählen Sie Add Version. Wählen Sie anschließend Blank Template. Sie können die Vorlage nun entweder per Code oder per Drag-and-Drop erstellen. In diesem Tutorial verwenden Sie Drag-and-Drop in Kombination mit Handlebars-Templating, um eine vollständig dynamische Vorlage zu erstellen.

Wählen Sie Design. SendGrid öffnet daraufhin die E-Mail-Vorlage. Geben Sie als Betreff {{subject}} ein. Dieser Platzhalter wird später programmgesteuert durch den dynamischen Wert ersetzt. Verwenden Sie für den Preheader entsprechend {{preheader}}.

Gestalten Sie die Vorlage mit Platzhaltern und beliebigem zusätzlichem Text. Um ein Bild hinzuzufügen, verwenden Sie das Modul Image und bearbeiten Sie den HTML-Code des Bildes. Ersetzen Sie die Bild-URL wie gezeigt durch die Variable {{image_url}}.

example code for the image replacement
example code for the image replacement

In diesem Tutorial können Sie außerdem eine Schaltfläche hinzufügen. Ziehen Sie das Element „Button“ in die E-Mail-Vorlage. Geben Sie für Button Text {{button_text}} und für Button URL {{button_url}} ein.

Anschließend sollte Ihre SendGrid-Vorlage wie folgt aussehen:

the sendgrid template with all placeholders
the sendgrid template with all placeholders

Speichern Sie die Vorlage.

Unter derselben ID können Sie mehrere Versionen einer dynamischen Vorlage speichern. Damit die Anwendung funktioniert, muss die gerade erstellte Vorlage auf „Active“ gesetzt sein.

Ihre .NET-Anwendung für RCS und SendGrid

Die .NET-Anwendung führt beide Kanäle zusammen und sendet gleichzeitig eine E-Mail und eine RCS-Nachricht.

Öffnen Sie Ihre IDE und erstellen Sie zunächst eine neue .NET-Web-API-Anwendung.

mkdir RcsEmailSender
cd RcsEmailSender
dotnet new console
dotnet new sln
dotnet sln add RcsEmailSender.csproj

Für das Projekt benötigen Sie die folgenden NuGet-Pakete:

dotnet add package SendGrid
dotnet add package Twilio
dotnet add package Microsoft.Extensions.Configuration
dotnet add package Microsoft.Extensions.Configuration.Json
dotnet add package Microsoft.Extensions.Configuration.EnvironmentVariables

Für dieses Projekt verwenden Sie mehrere Umgebungsvariablen. In diesem Tutorial speichern Sie diese Variablen in der Datei appsettings.json. Erstellen Sie die Datei im Projektordner. Fügen Sie die folgenden Zeilen ein und ersetzen Sie die Platzhalter durch die benötigten Werte für Ihre Anwendung.

{
 "MessageServices": {
   "Twilio": {
     "AccountSid": "YOUR_TWILIO_ACCOUNT_SID",
     "AuthToken": "YOUR_TWILIO_AUTH_TOKEN",
     "FromNumber": "+15551234567"
   },
   "SendGrid": {
     "ApiKey": "YOUR_SENDGRID_API_KEY",
     "FromEmail": "no-reply@example.com",
     "FromName": "Example Sender",
     "TemplateId": "d-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
   },
   "Recipients": {
     "PhoneNumber": "+15557654321",
     "Email": "recipient@example.com"
   }
 }
}

Die Twilio Account SID und das Auth Token finden Sie im Twilio-Dashboard. FromNumber ist die Absendernummer für Ihre RCS-Nachrichten. Für SendGrid benötigen Sie einen SendGrid API Key, mit dem Sie E-Mails versenden können. Wenn Sie einen benutzerdefinierten Schlüssel erstellen, achten Sie darauf, ihm die Berechtigung Mail Send zuzuweisen. Die Dynamic Template ID finden Sie im SendGrid-Dashboard bei der zuvor erstellten Vorlage. FromEmail ist Ihre verifizierte Absender-E-Mail-Adresse. Für FromName können Sie einen beliebigen aussagekräftigen Namen wählen. Tragen Sie unter Recipients die Telefonnummer und E-Mail-Adresse ein, die Sie zum Testen verwenden möchten.

Es gibt verschiedene Möglichkeiten, Umgebungsvariablen in einem .NET-Projekt sicher zu verwalten. Für diese Demo verwenden wir eine vereinfachte Lösung. Achten Sie darauf, keinen Code mit Ihren Umgebungsvariablen auf GitHub oder in ein anderes Versionskontrollsystem zu übertragen. Weitere Informationen zu bewährten Methoden für die sichere Speicherung von Umgebungsvariablen finden Sie in dieser Anleitung zum Festlegen von Umgebungsvariablen.

Jetzt können Sie den Code für das Projekt hinzufügen.

Erstellen Sie zunächst die Modelle, die für RCS und E-Mail verwendet werden.

In einer vollständig strukturierten Anwendung würden diese Modelle in einem eigenen Ordner liegen. Für diese Demo reicht jedoch eine einfache Modelldatei, in der Sie die benötigten Modelle speichern.

Erstellen Sie die Datei Models.cs und fügen Sie den folgenden Code ein:

using System;
namespace RcsEmailSender
{
   // Configuration class for storing API keys and credentials
   public class MessageServiceConfig
   {
       public string TwilioAccountSid { get; set; } = string.Empty;
       public string TwilioAuthToken { get; set; } = string.Empty;
       public string TwilioFromNumber { get; set; } = string.Empty;
       public string SendGridApiKey { get; set; } = string.Empty;
       public string SendGridFromEmail { get; set; } = string.Empty;
       public string SendGridFromName { get; set; } = string.Empty;
       public string SendGridTemplateId { get; set; } = string.Empty;
       public string RecipientPhoneNumber { get; set; } = string.Empty;
       public string RecipientEmail { get; set; } = string.Empty;
   }
   // Consolidated message model for both RCS and Email
   public class MessageContent
   {
       public string Title { get; set; } = string.Empty;
       public string Body { get; set; } = string.Empty;
       public string ImageUrl { get; set; } = string.Empty;
       public string ButtonText { get; set; } = string.Empty;
       public string ButtonUrl { get; set; } = string.Empty;
   }
}

Speichern Sie die Modelldatei.

Als Nächstes kümmern Sie sich um die Programmlogik des Projekts. Ersetzen Sie den vorhandenen Code in Program.cs durch Folgendes:

using Microsoft.Extensions.Configuration;
using SendGrid;
using SendGrid.Helpers.Mail;
using Twilio;
using Twilio.Rest.Api.V2010.Account;
using Twilio.Types;
namespace RcsEmailSender
{
   class Program
   {
       static async Task Main(string[] args)
       {
           // Set up configuration system
                var configuration = new ConfigurationBuilder()
               .SetBasePath(Directory.GetCurrentDirectory())
               .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
               //.AddEnvironmentVariables("RCS_EMAIL_") // Allows overriding with environment variables prefixed with RCS_EMAIL_
               .Build();
           // Load config from configuration
           var config = new MessageServiceConfig
           {
               TwilioAccountSid = configuration["MessageServices:Twilio:AccountSid"] ?? string.Empty,
               TwilioAuthToken = configuration["MessageServices:Twilio:AuthToken"] ?? string.Empty,
               TwilioFromNumber = configuration["MessageServices:Twilio:FromNumber"] ?? string.Empty,
               SendGridApiKey = configuration["MessageServices:SendGrid:ApiKey"] ?? string.Empty,
               SendGridFromEmail = configuration["MessageServices:SendGrid:FromEmail"] ?? string.Empty,
               SendGridFromName = configuration["MessageServices:SendGrid:FromName"] ?? string.Empty,
               SendGridTemplateId = configuration["MessageServices:SendGrid:TemplateId"] ?? string.Empty,
               RecipientPhoneNumber = configuration["MessageServices:Recipients:PhoneNumber"] ?? string.Empty,
               RecipientEmail = configuration["MessageServices:Recipients:Email"] ?? string.Empty
           };

Der Code lädt zunächst die API-Schlüssel und weiteren sicherheitsrelevanten Angaben aus der zuvor erstellten Datei appsettings.json. Eine optionale, auskommentierte Codezeile ermöglicht es Ihnen, stattdessen Umgebungsvariablen zu verwenden. Sobald alle Werte geladen sind, erstellt die Anwendung auf Grundlage dieses Modells einen MessageService.

Fügen Sie nun den nächsten Codeblock hinzu:

var messageContent = new MessageContent
           {
               Title = "Owl Air Elite Status",
               Body = "Congratulations! You've reached Elite status. Add code ELITE10 for 10% off your next flight. Book at twilio.com or call +15551234567",
               ImageUrl = "https://rcs-4036.twil.io/image.png", // Image URL for testing
               ButtonText = "Book Now",
               ButtonUrl = "https://twilio.com"
           };

Dieser Block erstellt die RCS-Nachricht. Ersetzen Sie die Test-URL durch die URL des gewünschten Bildes. Wenn Sie sie vorerst unverändert lassen, wird das Twilio-Logo gesendet.

Fügen Sie anschließend diesen Codeblock zu Program.cs hinzu:

try
           {
               //Send RCS message
               var rcsResult = await SendRcsMessage(config, messageContent);
               Console.WriteLine($"RCS message sent: {rcsResult}");
               // Send Email
               var emailResult = await SendEmailWithDynamicTemplate(config, messageContent);
               Console.WriteLine($"Email sent: {emailResult}");
           }
           catch (Exception ex)
           {
               Console.WriteLine($"Error sending messages: {ex.Message}");
           }
       }

An dieser Stelle werden die RCS-Nachricht und die E-Mail tatsächlich versendet. Der Code übergibt die jeweiligen Inhalte an die dynamische E-Mail-Vorlage und an die RCS-Nachricht.

Vervollständigen Sie Program.cs mit den folgenden Codeblöcken:

static async Task<string> SendRcsMessage(MessageServiceConfig config, MessageContent content)
       {
           TwilioClient.Init(config.TwilioAccountSid, config.TwilioAuthToken);
           var message = await MessageResource.CreateAsync(
               body: $"{content.Title}\n\n{content.Body}\n\nClick here: {content.ButtonUrl}",
               from: new PhoneNumber(config.TwilioFromNumber),
               to: new PhoneNumber(config.RecipientPhoneNumber),
               mediaUrl: new List<Uri> { new Uri(content.ImageUrl) } 
           );
           return message.Sid;
       }
       // Method to send email using SendGrid with dynamic template
       static async Task<bool> SendEmailWithDynamicTemplate(MessageServiceConfig config, MessageContent content)
       {
           // Initialize SendGrid client
           var client = new SendGridClient(config.SendGridApiKey);
           var from = new EmailAddress(config.SendGridFromEmail, config.SendGridFromName);
           var to = new EmailAddress(config.RecipientEmail);
           var msg = new SendGridMessage();
           msg.SetFrom(from);
           msg.AddTo(to);

           msg.SetTemplateId(config.SendGridTemplateId);
           // Define template data with proper naming that matches the SendGrid template
           var templateData = new
           {
               subject = content.Title,
               preheader = "Special offer inside!", // Optional preheader text
               title = content.Title,
               body_text = content.Body,
               image_url = content.ImageUrl,
               button_text = content.ButtonText,
               button_url = content.ButtonUrl,
               sender_name = config.SendGridFromName
           };
           msg.SetTemplateData(templateData);
           // Send the message
           var response = await client.SendEmailAsync(msg);
           return response.IsSuccessStatusCode;
       }
   }
}

Dieser Code weist den zuvor für RCS und E-Mail eingerichteten dynamischen Platzhaltern die entsprechenden Werte aus dem Code zu. Wenn alles korrekt eingerichtet ist, können Sie die Anwendung jetzt ausführen.

dotnet run

Die Anwendung sendet sowohl eine E-Mail als auch eine RCS-Nachricht. Die E-Mail entspricht der zuvor eingerichteten dynamischen Vorlage. Die RCS-Nachricht enthält dieselben Informationen und dieselbe Grafik.

example of sent RCS
example of sent RCS

Fehlerbehebung

Falls bei der Anwendung Probleme auftreten, sollten Sie einige Punkte überprüfen.

Prüfen Sie zunächst, ob Ihr Konto den Versand von RCS-Nachrichten unterstützt und das verwendete Gerät RCS empfangen kann. Denken Sie außerdem daran, das Empfangsgerät als RCS-Tester einzurichten. Für den Versand großer Mengen von RCS-Nachrichten kann je nach Land eine zusätzliche Verifizierung oder Zertifizierung erforderlich sein.

Wenn die RCS-Nachricht nicht wie erwartet dargestellt wird, prüfen Sie, ob das verwendete Bild über eine öffentliche URL erreichbar ist. Informationen zu den unterstützten Kartenfunktionen finden Sie außerdem in der Dokumentation zu TwilioCard Content Templates.

Wenn SendGrid die E-Mail nicht versendet, prüfen Sie das SendGrid-Dashboard. Möglicherweise müssen Sie den Absender oder dessen DNS-Einstellungen verifizieren. Prüfen Sie die E-Mail-Logs, um den Status der gesendeten E-Mails und mögliche Fehlercodes zu überprüfen.

Wenn die E-Mail nicht wie erwartet dargestellt wird, müssen Sie möglicherweise die Vorlage anpassen. Weitere Hinweise finden Sie in den Tipps zur Verwendung des Design Editors in SendGrid.

Wie geht es weiter?

In diesem Tutorial haben Sie gelernt, wie Sie eine RCS-Nachricht und eine SendGrid-E-Mail erstellen und beide zu einer einheitlichen Kampagne verbinden. Künftig könnten Sie beispielsweise zusätzliche Vorlagenbilder verwenden, um E-Mail und RCS-Nachricht optisch etwas stärker voneinander abzugrenzen. Eine weitere Möglichkeit wäre, die Kampagne zeitlich zu staffeln. Statt E-Mail und RCS-Nachricht gleichzeitig zu versenden, könnte die E-Mail erst dann gesendet werden, wenn der Nutzer nicht auf die RCS-Nachricht reagiert. So vermeiden Sie überflüssige E-Mails und können gleichzeitig per A/B-Test ermitteln, welche Nutzer auf welche Art der Produktansprache besser reagieren.

Weitere Anregungen für Projekte mit RCS finden Sie in diesen Twilio-Artikeln:

Wir sind gespannt, was Sie als Nächstes entwickeln!

Amanda Lange ist .NET Engineer und erstellt technische Inhalte. Sie zeigt Ihnen, wie Sie mit C# und .NET großartige Anwendungen entwickeln. Sie erreichen sie unter amlange [at] twilio.com.