Von Postmark wechseln
Behalten Sie die Postmark-Bibliothek und senden Sie über OpenEmail. Ändern Sie ihren Host und ihr Server-Token, und Ihr Sendecode bleibt, wie er ist.
Was Sie ändern
Richten Sie die Bibliothek auf https://api.openemail.uk/compat/postmark aus und setzen Sie dort, wo das Server-Token hingehört, einen OpenEmail-API-Schlüssel mit der Berechtigung emails:send ein. Er steht im selben Header X-Postmark-Server-Token. Ihre Aufrufe, die Mail senden, bleiben, wie sie sind, und die From-Adresse entscheidet, ob eine Nachricht hinausgehen darf, wie überall in OpenEmail.
import { ServerClient } from 'postmark' const client = new ServerClient(process.env.OPENEMAIL_API_KEY, { requestHost: 'api.openemail.uk/compat/postmark',}) await client.sendEmail({ From: '[email protected]', To: '[email protected]', Subject: 'Your invoice', HtmlBody: '<p>Your invoice is attached.</p>', MessageStream: 'outbound',})In Node ist requestHost Host und Pfad zusammen, ohne Schema und ohne abschließenden Schrägstrich. In Ruby braucht path_prefix an beiden Enden einen Schrägstrich. Verwenden Sie in Python das offizielle Paket postmark-python mit base_url. Das Community-Paket postmarker kann keinen Pfad unterhalb eines Hosts erreichen und funktioniert hier daher nicht. In PHP nimmt PostmarkClient::$BASE_URL Schema, Host und Pfad ohne abschließenden Schrägstrich. Der Wert ist statisch und gilt daher für jeden Postmark-Client im Prozess, auch für PostmarkAdminClient.
Was worauf abgebildet wird
Bedient werden die Endpunkte POST /email, /email/batch, /email/withTemplate und /email/batchWithTemplates. Feldnamen passen in jeder Groß- und Kleinschreibung, wie bei Postmark, und ein leerer String gilt als weggelassen.
| Postmark | In OpenEmail |
|---|---|
| From | Der Absender mit seinem Namen. |
| To | Durch Kommas getrennte Empfänger. Zusammen mit Cc und Bcc bis zu 50 pro Nachricht. |
| ReplyTo | Eine Reply-To-Adresse. |
| Subject | Der Betreff. |
| HtmlBody | Der HTML-Teil. TextBody wird zum Textteil, und einer der beiden ist Pflicht. |
| Headers | Eigene Header, angegeben als Name und Value: X-*, List-*, Reply-To, Precedence, Auto-Submitted, Importance, Priority und Feedback-ID. |
| Attachments | Dateien, höchstens 20 und zusammen 5 MB. Ein Bild, dessen ContentID das HTML als cid: verwendet, wird an seiner Stelle eingebettet. Jede andere Datei kommt als gewöhnlicher Anhang an. |
| Tag | Ein Tag namens tag. |
| Metadata | Tags mit denselben Namen und Werten. Zusammen mit Tag höchstens 10 pro Nachricht. |
| TrackOpens | Schaltet das Öffnungs-Tracking für die Nachricht ein oder aus. |
| TrackLinks | HtmlAndText und HtmlOnly schalten das Klick-Tracking ein, None schaltet es aus. |
| MessageStream | outbound oder die ID eines anderen Transaktions-Streams sendet die Nachricht wie gewohnt. |
| TemplateAlias | Der Slug oder die ID (tpl_...) einer OpenEmail-Vorlage, ausgefüllt aus TemplateModel. InlineCss wird angenommen und ändert nichts. |
Was abgelehnt wird, und warum
TemplateId, mit ErrorCode 1101. Eine Postmark-Vorlagen-ID bedeutet hier nichts, legen Sie die Vorlage also in OpenEmail neu an und senden Sie deren Slug oder ID alsTemplateAlias.- Der Stream
broadcast, mit ErrorCode 1236. Diese Endpunkte senden Transaktionsmail, und Newsletter gehen als OpenEmail-Broadcasts hinaus. Subject,HtmlBodyoderTextBodybei einer Vorlagennachricht, mit ErrorCode 1123, weil die Vorlage sie liefert.TrackLinksmit dem WertTextOnly, weil OpenEmail die Links im HTML-Teil verfolgt.- Mehr als eine Reply-To-Adresse, ein doppelt angegebener Header oder einer außerhalb der obigen Liste, mehr als 10 Tags und ein Tag- oder
Metadata-Name aus anderen Zeichen als Buchstaben, Ziffern,_und-. - Ein Batch mit mehr als 100 Nachrichten, mit ErrorCode 410. Postmark nimmt 500, teilen Sie größere Batches also auf.
Antworten und Fehler
- Ein Versand antwortet mit 200 und
To,SubmittedAt,MessageID,ErrorCode0 undMessageOK.MessageIDist die OpenEmail-Nachrichten-ID, dieGET /emails/{id}und Webhooks verwenden. Ein HeaderIdempotency-Keyfunktioniert wie im Rest der API. - Ein Batch antwortet mit 200 und einem Ergebnis pro Nachricht, in derselben Reihenfolge. Eine gescheiterte Nachricht trägt nur ihren
ErrorCodeund ihreMessage, und die anderen gehen trotzdem hinaus. - Fehler kommen als
ErrorCodeundMessagezurück. Ein fehlender oder unbekannter Schlüssel, oder einer ohneemails:send, antwortet mit HTTP 401 und ErrorCode 10. Der Rest antwortet mit HTTP 422: ErrorCode 300 für die Nachricht selbst, 400 für eine From-Adresse, die der Schlüssel nicht verwenden darf, 401 für eine Domain, die noch nicht senden kann, 402 für einen Body, der kein JSON ist, und 405 für einen Workspace, der sein Versandkontingent aufgebraucht hat. HTTP 413 bedeutet, dass der Body über 10 MB liegt, bei einem Batch über 50 MB, oder dass die Anhänge über 5 MB liegen.