E-Mails versenden
Eine API für jede E-Mail, die Sie versenden.
Transaktional oder Marketing, eine Nachricht oder hundert – alles über dieselbe E-Mail-API, mit Idempotenz, Unterdrückung und Webhooks. Übergeben Sie rohes HTML oder rendern Sie Ihre React-Email-Templates.
Erstellen Sie Ihr Konto, dann erstellen Sie einen API-Schlüssel und senden Sie eine Testnachricht.
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { WelcomeEmail } from "./emails/welcome";
const bird = new BirdClient({
apiKey: process.env.BIRD_API_KEY!,
});
const { data, error } = await bird.email.send({
from: "Bird <hello@bird.com>",
to: ["ada@example.com"],
subject: "Your invite is ready",
html: await render(<WelcomeEmail name="Ada" />),
}).safe();
if (error) throw error;
console.log(data.id);
// → "em_2bX91Yk8h..."
You can sign in any time at bird.com/login.
Your test API key is on your dashboard, ready to send.
Sie versenden bereits über SMTP?
Behalten Sie Ihren bestehenden SMTP-Client bei und verbinden Sie ihn mit dem Relay von Bird. Nutzen Sie die SMTP-Einrichtungsseite für regionale Hosts, TLS-Ports und Authentifizierung. Wenn Ihre Anwendung Nachrichten empfangen und verarbeiten muss, beginnen Sie mit eingehendem E-Mail-Empfang.
Versenden Sie Ihre erste E-Mail in fünf Minuten.
In der Sprache, die Sie bereits verwenden.
Der Versand ist das Herzstück der Bird Email API. Ihr erster Versand kann an eine Sandbox-Adresse (delivered@messagebird.dev) gehen, sodass Sie die gesamte Plattform (Versand, Webhooks, Unterdrückung) testen können, bevor Sie eine Domain verifizieren.
const msg = await bird.email.send({
from: { email: "onboarding@messagebird.dev", name: "Bird" },
to: ["delivered@messagebird.dev"],
subject: "Hello from Bird",
html: "<p>My first Bird email.</p>",
});
console.log(msg.id, msg.status); // "em_…", "accepted"Fünf Dinge, die Sie nicht selbst bauen müssen.
Derselbe Vertrag auf jedem Bird-Kanal.
- 01
Transaktional + Marketing.
Derselbe Endpoint sendet einen Passwort-Reset oder eine Kampagne. Ein Feld category bestimmt, wie Suppression und Abmeldungen angewendet werden.
- 02
Templates nach Ihren Vorstellungen.
Übergeben Sie rohes HTML, rendern Sie React Email-Templates in Ihrer App zu HTML und senden Sie das Ergebnis, oder benennen Sie ein gespeichertes Template und lassen Sie es für Sie rendern. Ihre Toolchain, unverändert.
- 03
Batch bis zu 100.
Bis zu 100 unabhängige Nachrichten pro Aufruf, jede mit eigenem Empfänger und eigenen Variablen – als eine Einheit validiert, damit Sie nie halb versenden.
- 04
Idempotent per Vertrag.
Jeder Versand akzeptiert einen Idempotency-Key, sodass ein nach einem Timeout wiederholter Request das ursprüngliche Ergebnis zurückgibt, statt doppelt zu senden.
- 05
Ein Webhook bei jeder Statusänderung.
Accepted, delivered, opened, clicked, bounced, complained. Jeder einzelne HMAC-signiert, replay-geschützt, idempotent, derselbe Envelope auf jedem Kanal.
Senden Sie die erste Anfrage aus Ihrer Anwendung.
Erstellen Sie ein Konto und einen API-Schlüssel, dann folgen Sie der Versandanleitung mit einem Testempfänger.
Sie versenden bereits woanders? Wechseln Sie an einem Nachmittag.
Der Aufruf, den Sie bereits machen, ändert sich kaum: Tauschen Sie den Client, behalten Sie Ihre Templates und richten Sie Ihre Webhooks auf einen Endpunkt. Migrationsleitfäden decken SendGrid, Amazon SES, Mailgun und Resend ab.
import sgMail from "@sendgrid/mail";
sgMail.setApiKey(process.env.SENDGRID_API_KEY!);
await sgMail.send({
from: "hello@yourdomain.com",
to: "delivered@messagebird.dev",
subject: "Your invite is ready",
html: "<p>Welcome aboard, Ada.</p>",
});
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
await bird.email.send({
from: "hello@yourdomain.com",
to: ["delivered@messagebird.dev"],
subject: "Your invite is ready",
html: "<p>Welcome aboard, Ada.</p>",
});
Eine Nachricht oder hundert, ein Call.
Fassen Sie bis zu 100 unabhängige Nachrichten in einem Request zusammen, jede mit eigenem Empfänger und eigenen Variablen. Der Batch wird als Einheit validiert: Eine fehlerhafte Nachricht lehnt den Aufruf mit einem 422 ab, damit Sie nie halb versenden. Ein einzelner Idempotency-Key macht den gesamten Request sicher wiederholbar.
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { Digest } from "./emails/digest";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const messages = await Promise.all(
users.map(async (u) => ({
from: "Acme <hello@yourdomain.com>",
to: [u.email],
subject: "Your weekly digest",
html: await render(<Digest user={u} />),
})),
);
const { data: batch, error } = await bird.email
.sendBatch(messages, { idempotencyKey: `digest-${runId}` })
.safe();
if (error) throw error;
console.log(`queued ${batch.data.length} messages`);
Hängen Sie Ihren eigenen Kontext an jeden Versand an.
Tags sind eine erstklassige, filterbare Dimension: Schlüsseln Sie Zustellung und Engagement nach Kampagne, Template oder Experiment in der Statistik-API auf (bis zu 20 pro Nachricht). Metadaten sind beliebiges JSON, bis zu 2 KB, das bei jedem Lesen und jedem Webhook unverändert zurückkommt – so reisen Ihre eigenen IDs mit der Nachricht mit.
await bird.email.send({
from: "Acme <hello@yourdomain.com>",
to: ["delivered@messagebird.dev"],
subject: "Your invite is ready",
html: "<p>Welcome aboard, Ada.</p>",
tags: [{ name: "campaign", value: "spring-2026" }],
metadata: { user_id: "u_2bX91", order_id: "ord_5512" },
});
Verfolge jede Nachricht über ihren gesamten Lebenszyklus.
Ein Versand gibt sofort 202 zurück; das Ergebnis kommt als Webhook pro Empfänger. Verifizieren Sie eine Signatur und verzweigen Sie nach Typ: derselbe Umschlag, den Sie bereits für SMS, Voice und WhatsApp verarbeiten.
import { bird } from "@/lib/bird";
export async function POST(req: Request) {
const event = bird.webhooks.unwrap(
await req.text(),
Object.fromEntries(req.headers),
);
switch (event.type) {
case "email.delivered":
await markDelivered(event.data.email_id);
break;
case "email.bounced":
await flag(event.data.recipient, event.data.bounce_type);
break;
}
return new Response(null, { status: 204 });
}
Hard Bounces und Beschwerden aktualisieren die Empfänger-Sperrlisten. Abmeldungen erfassen eine Opt-out-Präferenz. Diese Einträge werden beim Verarbeiten späterer Sendungen geprüft.
email.acceptedDer Versand wurde akzeptiert und wird für die Zustellung vorbereitet.email.processedIn der Warteschlange für den Mailserver des Empfängers.email.deliveredDer Mailserver des Empfängers hat die Nachricht akzeptiert.email.deferredVorübergehend abgelehnt – wir versuchen es erneut.email.bouncedDauerhaft fehlgeschlagen: Bounce-Typ und SMTP-Code in der Payload.email.openedDer Empfänger hat die Nachricht geöffnet. Kann mehrfach ausgelöst werden.email.clickedDer Empfänger hat auf einen getrackten Link geklickt.email.complainedDer Empfänger hat die Nachricht als Spam gemeldet.email.unsubscribedDer Empfänger hat sich über einen getrackten Abmeldelink abgemeldet.
Testen Sie jedes Ergebnis, bevor Sie live gehen.
In der Sandbox bestimmt die Empfängeradresse das Ergebnis – nicht Ihr Kontostatus. Senden Sie an delivered@messagebird.dev für eine saubere Zustellung, oder an bounce@, softbounce@, deferred@, complaint@ und suppressed@, um jeden Fehlerpfad durch die echte Pipeline und die echten Webhooks zu durchlaufen. Keine Domain zu verifizieren, kein Risiko für Ihre Reputation. Die Produktionsumgebung ist bewusst geschützt: Sie verifizieren zuerst eine Domain, und eine neue Domain oder dedizierte IP durchläuft ein Warmup, bevor sie das volle Volumen übernimmt.
Geh tiefer in die Docs.
Lesen Sie den Versandleitfaden, binden Sie E-Mail-Events und Webhooks an, oder folgen Sie – falls Sie von einem anderen Anbieter kommen – einem Migrationsleitfaden für SendGrid, SES, Mailgun oder Resend.
Testen Sie das Verhalten rund um den Versand.
Ein funktionierender Versandaufruf ist der Anfang einer Integration. Simulieren Sie Bounces und Beschwerden, behandeln Sie doppelte Webhook-Zustellungen und entscheiden Sie, wie Ihre Anwendung Nachrichten plant oder Antworten empfängt.
Fahren Sie mit dem Workflow fort, den Sie benötigen
Wählen Sie das Produkt oder die Anleitung, die zur nächsten Aufgabe passt.
In die Praxis umsetzen.
Weiter mit der Dokumentation, Anleitungen und Beispielen zu diesem Thema. Die Ressourcen sind auf Englisch.
Fragen zum E-Mail-Versand
Kann ich sowohl transaktionale als auch Marketing-E-Mails senden?
Was passiert, wenn eine Anfrage ein Timeout hat und ich sie erneut sende?
Kann ich einen Versand für später planen?
Kann ich Dateien anhängen?
Verbinden Sie den Versand mit dem Rest Ihres Workflows
Senden Sie Ihre erste Nachricht mit Bird.
Erstellen Sie einen API-Schlüssel, testen Sie Ihren Versand und verbinden Sie Zustellereignisse. Bauen Sie auf der Integration auf, die Sie bereits ausführen können.
Erstellen Sie Ihr Konto, dann erstellen Sie einen API-Schlüssel und senden Sie eine Testnachricht.