Envoyer des e-mails
Une seule API pour chaque e-mail que vous envoyez.
Transactionnel ou marketing, un message ou cent, envoyés via la même Email API, avec idempotence, suppression et webhooks intégrés. Transmettez du HTML brut ou faites le rendu de vos templates React Email.
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.
Des équipes qui créent des logiciels de classe mondiale nous font confiance au quotidien
Découvrir plus de témoignages clientsVous envoyez déjà via SMTP ?
Conservez votre client SMTP existant et connectez-le au relais de Bird. Consultez la page de configuration SMTP pour les hôtes régionaux, les ports TLS et l'authentification. Si votre application doit recevoir et analyser des messages, commencez par l'e-mail entrant.
Envoyez votre premier e-mail en cinq minutes.
Depuis le langage que vous utilisez déjà.
L'envoi est au cœur de l<hub>API Email Bird</hub>. Votre premier envoi peut être adressé à une adresse sandbox (delivered@messagebird.dev), ce qui vous permet de tester lensemble de la plateforme (envois, webhooks, suppression) avant de vérifier un domaine.
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"Cinq choses que vous ne construisez pas vous-même.
Le même contrat sur chaque canal Bird.
- 01
Transactionnel et marketing.
Le même endpoint envoie une réinitialisation de mot de passe ou une campagne. Un champ category détermine comment s'appliquent la suppression et les désabonnements.
- 02
Des modèles à votre façon.
Transmettez du HTML brut, effectuez le rendu de templates React Email en HTML dans votre application et envoyez le résultat, ou nommez un template stocké et laissez-nous le rendre pour vous. Votre chaîne d'outils, inchangée.
- 03
Envoi par lot jusqu'à 100.
Jusqu'à 100 messages indépendants par appel, chacun avec son propre destinataire et ses variables, validés comme un seul ensemble pour ne jamais envoyer à moitié.
- 04
Idempotent par contrat.
Chaque envoi accepte une clé d'idempotence : ainsi, une requête relancée après une expiration renvoie le résultat d'origine au lieu de doubler l'envoi.
- 05
Un webhook à chaque changement d'état.
Accepté, délivré, ouvert, cliqué, rejeté (bounce), signalé comme spam. Chacun signé en HMAC, protégé contre le rejeu, idempotent, la même enveloppe sur tous les canaux.
Effectuez la première requête depuis votre application.
Créez un compte et une clé API, puis suivez le guide d'envoi avec un destinataire de test.
Vous envoyez déjà ailleurs ? Migrez en une après-midi.
L'appel que vous faites déjà change à peine : remplacez le client, gardez vos templates, pointez vos webhooks vers un seul endpoint. Les guides de migration couvrent SendGrid, Amazon SES, Mailgun et Resend.
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>",
});
Un message ou cent, un seul appel.
Regroupez jusqu'à 100 messages indépendants dans une seule requête, chacun avec son propre destinataire et ses variables. Le lot est validé comme un tout : un seul message incorrect rejette l'appel avec un 422, vous n'envoyez donc jamais à moitié. Une seule clé d'idempotence rend toute la requête rejouable en toute sécurité.
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`);
Attachez votre propre contexte à chaque envoi.
Les tags sont une dimension filtrable de première classe : segmentez la délivrabilité et l'engagement par campagne, template ou expérimentation dans l'API de stats (jusqu'à 20 par message). Les métadonnées sont du JSON arbitraire, jusqu'à 2 Ko, restitué intact à chaque lecture et webhook, pour que vos propres identifiants accompagnent le message.
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" },
});
Suivez chaque message tout au long de sa vie.
Un envoi renvoie immédiatement un 202 ; le résultat arrive sous forme de webhook par destinataire. Vérifiez une signature, branchez selon le type : la même enveloppe que vous gérez déjà pour SMS, voix et WhatsApp.
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 });
}
Les rebonds définitifs et les plaintes mettent à jour les suppressions de destinataires. Les désabonnements enregistrent une préférence de retrait. Ces enregistrements sont vérifiés lors du traitement des envois suivants.
email.acceptedL'envoi a été accepté et est en cours de préparation pour la livraison.email.processedEn file d'attente pour le serveur de messagerie du destinataire.email.deliveredLe serveur de messagerie du destinataire a accepté le message.email.deferredTemporairement refusé, nous réessaierons.email.bouncedÉchec permanent : type de rebond et code SMTP dans le payload.email.openedLe destinataire a ouvert le message. Peut se déclencher plusieurs fois.email.clickedLe destinataire a cliqué sur un lien suivi.email.complainedLe destinataire a signalé le message comme spam.email.unsubscribedLe destinataire s'est désinscrit via un lien de désabonnement suivi.
Testez chaque résultat avant de passer en production.
Dans le sandbox, c'est l'adresse du destinataire qui détermine le résultat, pas l'état de votre compte. Envoyez à delivered@messagebird.dev pour une livraison réussie, ou à bounce@, softbounce@, deferred@, complaint@ et suppressed@ pour simuler chaque scénario d'échec à travers le pipeline réel et les webhooks réels. Aucun domaine à vérifier, aucun risque pour votre réputation. La production est volontairement contrôlée : vous vérifiez d'abord un domaine, et un nouveau domaine ou une IP dédiée passe par une phase de montée en charge (warmup) avant de supporter le volume complet.
Allez plus loin dans la documentation.
Lisez le guide d'envoi, branchez les événements e-mail et webhooks, ou, si vous venez d'un autre fournisseur, suivez un guide de migration depuis SendGrid, SES, Mailgun ou Resend.
Testez le comportement autour de l'envoi.
Un appel d'envoi fonctionnel est le point de départ d'une intégration. Simulez des rebonds et des plaintes, gérez les livraisons de webhooks en double et décidez comment votre application planifie les messages ou reçoit les réponses.
Poursuivez avec le flux dont vous avez besoin
Choisissez le produit ou le guide correspondant à votre prochaine tâche.
Mettez-le en pratique.
Poursuivez avec la documentation, les guides et les exemples sur ce sujet. Les ressources sont en anglais.
161%
Augmentation des taux d'ouverture d'e-mails rapportée dans l'étude de cas Zillow.
Conçu avec Bird
Quand le bon logement apparaît, l'e-mail doit arriver.
Zillow a confié ses alertes immobilières urgentes à Bird, avec la capacité d'absorber les pics d'envoi et les analyses pour comprendre l'engagement. Son équipe a rapporté une augmentation de 161 % des taux d'ouverture dès le premier mois.
Vous préparez une migration ou un envoi à plus fort volume ?
Contacter les ventesQuestions sur l'envoi d'e-mails
Puis-je envoyer à la fois des e-mails transactionnels et marketing ?
Que se passe-t-il si une requête expire et que je la réessaie ?
Puis-je planifier un envoi pour plus tard ?
Puis-je joindre des fichiers ?
Connectez l'envoi au reste de votre flux
Contactez notre équipe email
Créez votre prochaine intégration email.
Discutez de vos messages transactionnels, envois en masse et événements de livraison. Nous vous aiderons à planifier votre intégration, votre volume d'envoi et votre migration.
Créez votre compte, puis créez une clé API et envoyez un message de test.