Zum Inhalt springen

Umstieg von EmailJS

Frontmail ist so gebaut, dass der Umstieg von EmailJS nur Minuten dauert: Das Browser-SDK hat dieselben Funktionssignaturen, die REST-API akzeptiert dieselben Felder, und bei einfachen Vorlagen ist auch die Vorlagensyntax kompatibel.

1. Organisation erstellen und E-Mail-Dienst verbinden

Abschnitt betitelt „1. Organisation erstellen und E-Mail-Dienst verbinden“

Registrieren Sie sich auf app.frontmail.dev und verbinden Sie denselben E-Mail-Anbieter, den Sie in EmailJS nutzen (siehe E-Mail-Dienste). Wenn Sie einen Gmail- oder Outlook-Dienst verwendet haben, verbinden Sie ihn erneut per OAuth; bei SMTP- oder API-Anbietern tragen Sie dieselben Zugangsdaten ein.

Legen Sie für jede EmailJS-Vorlage eine Vorlage in Frontmail an. Übernehmen Sie Betreff, To, From, Reply-To und den Inhalt. Klicken Sie dann auf Aus Vorlage erkennen und legen Sie Typen und Pflichtfelder fest – die Unterschiede beschreibt der Abschnitt Vorlagensyntax weiter unten.

EmailJS Frontmail Wo Sie es finden
Public Key (user_id) Öffentlicher Schlüssel pk_… Sicherheit → Öffentlicher Schlüssel
Private Key (accessToken) Privater Schlüssel sk_… – nur auf dem Server Sicherheit → Private Schlüssel (wird nur einmal angezeigt)
Service ID Dienst-ID svc_… E-Mail-Dienste
Template ID Vorlagen-ID tpl_… Vorlagen
Domain allowlist Erlaubte Websites Sicherheit → Erlaubte Websites
reCAPTCHA Cloudflare Turnstile mit Ihrem eigenen kostenlosen Widget Schlüssel unter Sicherheit → Bot-Schutz (Turnstile), pro Vorlage Einstellungen → Schutz → CAPTCHA verlangen (Turnstile)
import emailjs from '@emailjs/browser';
import emailjs from '@frontmail/emailjs-compat';

Ihre Aufrufe von emailjs.init(), emailjs.send() und emailjs.sendForm() funktionieren weiter – es ändern sich nur die IDs und der Schlüssel. Siehe EmailJS-Kompatibilität.

Sie binden das Skript über ein CDN ein? Ersetzen Sie das <script> von EmailJS durch den Compat-Build. Er stellt dasselbe globale Objekt emailjs bereit, Ihre Aufrufe bleiben also unverändert:

<script
src="https://cdn.jsdelivr.net/npm/@frontmail/emailjs-compat@0.1.0/dist/emailjs-compat.umd.js"
integrity="sha384-RH+fuNzBqTKgxDJBHRmWfOn37fs33L+Or1ujDV7wThynx9FxD9uPptLu80LpCrEc"
crossorigin="anonymous"></script>

Legen Sie die genaue Version fest und behalten Sie das Attribut integrity bei – wo Sie den Hash neuerer Releases finden, steht unter Version festlegen.

Alternativ laden Sie das native SDK (@frontmail/browser, ebenfalls mit fester Version) und benennen die Aufrufe emailjs. in frontmail. um – die Argumente sind dieselben, das Promise liefert aber status: 'queued' oder 'held' statt 200.

Sie rufen die REST-API direkt auf? Ändern Sie den Host auf https://api.frontmail.dev. Die Pfade /api/v1.0/email/send und /api/v1.0/email/send-form sowie die Felder im Body bleiben gleich.

Wenn Ihre Vorlagen reCAPTCHA verwendet haben, entfernen Sie das reCAPTCHA-Widget und fügen Sie Turnstile hinzu. Wie bei reCAPTCHA verwenden Sie Schlüssel aus Ihrem eigenen Konto: Erstellen Sie in Cloudflare ein kostenloses Turnstile-Widget, tragen Sie dessen Schlüssel unter Sicherheit → Bot-Schutz (Turnstile) ein und klicken Sie auf CAPTCHA für alle Vorlagen aktivieren; neue Vorlagen verlangen es dann automatisch. Binden Sie das Widget mit Ihrem Site Key in das Formular ein – siehe Turnstile. Das Feld g-recaptcha-response wird nicht verwendet.

Senden Sie einen Test aus dem Vorlagen-Editor, deployen Sie und behalten Sie den Verlauf im Blick. Behalten Sie Ihr EmailJS-Konto, bis Sie gesehen haben, dass echter Traffic über Frontmail läuft.

@frontmail/browser oder ein Framework-SDK bietet Ihnen typisierte Parameter, den Status held, getStatus() und typisierte Fehler.

Frontmail verwendet Handlebars, EmailJS eine Mustache-ähnliche Syntax. Häufige Fälle:

EmailJS Frontmail Hinweise
{{name}} {{name}} Gleich. In Frontmail immer HTML-escaped.
{{{html_content}}} {{html_content}} mit Parametertyp html Dreifache Klammern schalten das Escaping in Frontmail nicht ab; verwenden Sie den bereinigten Typ html.
{{#if}}-artige Abschnitte aus Mustache {{#name}}…{{/name}} {{#if name}}…{{/if}} Verwenden Sie explizite Handlebars-Blöcke.
Invertierter Mustache-Abschnitt {{^name}}…{{/name}} {{#unless name}}…{{/unless}}
Listen über Abschnitte {{#each items}}…{{/each}} mit einem list-Parameter Definieren Sie itemFields für die Validierung.
– {{formatDate}}, {{formatMoney}}, {{eq}} … Weitere Helper.

Standardwerte aus den Vorlagenfeldern in EmailJS entsprechen in Frontmail dem default des jeweiligen Parameters.

Ein sachlicher Vergleich der für den Umstieg relevanten Funktionen, Stand September 2026. Preise und Limits beider Dienste ändern sich mit der Zeit – prüfen Sie vor Ihrer Entscheidung die Seiten der jeweiligen Anbieter.

EmailJS Frontmail
Wenn das Monatskontingent aufgebraucht ist Anfragen werden bis zum nächsten Zeitraum oder einem Upgrade abgelehnt Nachrichten werden zurückgehalten und automatisch gesendet, sobald Credits hinzukommen; optional Überziehung und automatische Aufladung
Vorausbezahlte Credit-Pakete mit Gültigkeit Nicht angeboten Pakete mit 5k / 25k / 100k Credits, 3–12 Monate gültig, in jedem Tarif
Rate Limit der REST-API 1 Anfrage pro Sekunde 2–50 Anfragen pro Sekunde je nach Tarif, zusätzlich /v1/send-batch
Vorlagensprache Variablen mit einfachen Abschnitten Handlebars mit Bedingungen, Schleifen, Helpern und typisierten, validierten Parametern
CAPTCHA reCAPTCHA v2 Cloudflare Turnstile, mit einem Klick für alle Vorlagen aktiv
Failover beim Anbieter Nicht angeboten Ersatzdienst pro Vorlage, tägliche Health-Checks
Zustellverfolgung Nicht angeboten Delivered / bounced / complained / opened / clicked über die Webhooks des Anbieters
Wiederholungen und Idempotenz im SDK Nicht dokumentiert Automatische Wiederholungen mit Idempotency Keys
Framework-SDKs Browser-SDK, React-Native-SDK Browser, React, React Native, Vue, Svelte, Node, EmailJS-kompatibel

Wenn Ihnen hier eine veraltete Angabe auffällt, schreiben Sie uns bitte an support@frontmail.dev – wir korrigieren sie.