ENbext.dev
DocumentationOutils pour applications

Traduction automatique depuis l’anglais. Consulter l’original.

Sur cette page

Envoyables

@bext-stack/framework/mail crée des e-mails transactionnels à la manière de Laravel Mailable : vous décrivez une spécification structurée (salutation, paragraphes, bouton d'appel à l'action, salutation) et renderMailable renvoie un e-mail HTML réactif de style en ligne plus une alternative en texte brut — pas de MJML, pas d'étape de construction.

Quand l'utiliser#

  • Tout email transactionnel qui mérite d’avoir l’air conçu : reçus, bienvenue mails, réinitialisations de mot de passe, factures.
  • Chaque fois que vous souhaitez que les versions HTML et texte brut restent synchronisées.

Rendu#

ts
import { renderMailable } from "@bext-stack/framework/mail";

const msg = renderMailable({
  subject: "Your receipt",
  greeting: "Hi Ada,",
  intro: ["Thanks for your order — here's your receipt."],
  action: { text: "View receipt", url: "https://app/receipt/42" },
  outro: ["If you didn't make this purchase, contact support."],
  salutation: "— The Shop",
  brand: { name: "Shop", color: "#16a34a", footer: "© Shop 2026" },
});
// msg: { subject, html, text }

Le résultat est exactement la forme { subject, html, text } que tout ce qui veut en aval : transmettez-la au point de terminaison de messagerie du SDK ou renvoyez-la à partir d'une notification. toMail:

ts
import { renderMailable } from "@bext-stack/framework/mail";

const Receipt = {
  via: () => ["mail"],
  toMail: (u) => renderMailable({ subject: "Receipt", greeting: `Hi ${u.name},`, /* … */ }),
};

Spécification#

Champ But
subject le sujet de l'e-mail
greeting ligne d'ouverture ( "Hi Ada," )
intro[] paragraphes avant le bouton
action un CTA { text, url } (un bouton stylisé)
outro[] paragraphes après le bouton
salutation ligne de clôture
brand { name?, color?, footer? } — en-tête + accent + pied de page

Sécurité#

Le contenu utilisateur est avec échappement HTML dans la sortie HTML, les URL d'action sont validées sur http(s) (une URL javascript: devient # ), et la couleur d'accent de la marque est validée à une valeur hexadécimale - donc un mailable construit à partir de l'entrée de l'utilisateur ne peut pas injecter balisage ou scripts dans l’e-mail.

Essayez-le#

Le démo des mailables en direct compose un e-mail à partir d'un formulaire et affiche à la fois l'aperçu HTML rendu et la version en texte brut. Source dans sites/demo/src/app/examples/mail/page.tsx.

Voir aussi#

Modifier cette page ↗Besoin d’aide ? ↗
Rechercher dans la documentation

Saisissez un sujet, une commande ou une question.