EmailJS-Kompatibilität (@frontmail/emailjs-compat)
@frontmail/emailjs-compat bietet dieselben Funktionen und Signaturen wie @emailjs/browser,
spricht aber mit Frontmail. Bestehender Code funktioniert weiter, sobald Sie den Import und die IDs
geändert haben.
npm uninstall @emailjs/browsernpm install @frontmail/emailjs-compatimport emailjs from '@emailjs/browser';import emailjs from '@frontmail/emailjs-compat';
emailjs.init({ publicKey: 'pk_4f2a…' });emailjs.send('svc_01J9…', 'tpl_01J9…', { name: 'Jana' });emailjs.sendForm('svc_01J9…', 'tpl_01J9…', '#contact-form');Was kompatibel ist
Abschnitt betitelt „Was kompatibel ist“init(publicKey)undinit({ publicKey, blockHeadless, blockList, limitRate, storageProvider }), mit optionalem zweitem Argument für den API-Origin (Standardhttps://api.frontmail.dev).send(serviceID, templateID, templateParams?, options?)undsendForm(serviceID, templateID, form, options?), wobeioptionsein öffentlicher Schlüssel als String oder ein Optionsobjekt sein kann.- Der aufgelöste Wert ist ein
EmailJSResponseStatusmitstatus(200) undtext('OK') wie bei EmailJS, dazu Frontmail-Extras:messageId,deliveryStatus('queued'oder'held') undstatusToken. - Fehler werden als
EmailJSResponseStatus-Objekte mitstatusundtextgeworfen, sodass bestehendecatch-Handler funktionieren. Der zugrunde liegendeFrontmailError(mitcodeunddocsUrl) steht inerror.error. - Die REST-Pfade
/api/v1.0/email/sendund/api/v1.0/email/send-formgibt es aufapi.frontmail.dev, mit den EmailJS-Body-Feldernservice_id,template_id,user_id,template_params,accessToken.
Was anders ist
Abschnitt betitelt „Was anders ist“- IDs und Schlüssel sind die von Frontmail:
svc_…,tpl_…,pk_…,sk_…. - Vorlagen verwenden die Frontmail-Syntax (Handlebars) und typisierte Parameter. Die meisten Vorlagen
mit
{{variable}}funktionieren unverändert; siehe den Migrationsleitfaden. - Wenn Ihre Credits aufgebraucht sind, kann Frontmail mit einer zurückgehaltenen Nachricht
antworten (trotzdem ein Erfolg). Die Kompatibilitätsschicht meldet das als
status: 200mitdeliveryStatus: 'held';@frontmail/browserliefert direktstatus: 'held'. - Frontmail wiederholt Netzwerkfehler und 5xx automatisch mit einem Idempotenzschlüssel.
- Übersetzungen von Vorlagen werden nicht unterstützt – EmailJS kennt so etwas nicht. Das
Kompatibilitätspaket und die Routen
/api/v1.0/email/…senden immer die Standardsprache der Vorlage (einlocaleim Body wird ignoriert, ein Formularfeldfm_localeist ein gewöhnlicher Vorlagenparameter). Verwenden Sie@frontmail/browsermit der Optionlocale, um eine Sprache zu wählen. accessToken(ein privater Schlüssel) wird im Browser abgelehnt:send/sendFormschlagen mitstatus: 400underror.code === 'private_key_in_browser'fehl. Entfernen Sie ihn aus dem Frontend-Code – siehe den Migrationsleitfaden. Serverseitiger Code (Node.js, ohnedocument) darf ihn weiterhin übergeben.sendFormüberspringt Passwortfelder, Anti-CSRF-Felder gängiger Frameworks und reservierte Namen wieaccessToken(siehe sendForm).blockHeadless,blockListundlimitRatelaufen im Browser und sind eine Komfortfunktion, kein Sicherheitsmechanismus – setzen Sie Limits im Dashboard unter Sicherheit durch.
Wenn Sie so weit sind, ist der Umstieg auf @frontmail/browser oder ein
Framework-SDK unkompliziert und bringt Ihnen typisierte Ergebnisse, typisierte Parameter und
getStatus.