Zur Dokumentation springen
Wissensdatenbank

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.

PostmarkIn OpenEmail
FromDer Absender mit seinem Namen.
ToDurch Kommas getrennte Empfänger. Zusammen mit Cc und Bcc bis zu 50 pro Nachricht.
ReplyToEine Reply-To-Adresse.
SubjectDer Betreff.
HtmlBodyDer HTML-Teil. TextBody wird zum Textteil, und einer der beiden ist Pflicht.
HeadersEigene Header, angegeben als Name und Value: X-*, List-*, Reply-To, Precedence, Auto-Submitted, Importance, Priority und Feedback-ID.
AttachmentsDateien, 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.
TagEin Tag namens tag.
MetadataTags mit denselben Namen und Werten. Zusammen mit Tag höchstens 10 pro Nachricht.
TrackOpensSchaltet das Öffnungs-Tracking für die Nachricht ein oder aus.
MessageStreamoutbound oder die ID eines anderen Transaktions-Streams sendet die Nachricht wie gewohnt.
TemplateAliasDer 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 als TemplateAlias.
  • Der Stream broadcast, mit ErrorCode 1236. Diese Endpunkte senden Transaktionsmail, und Newsletter gehen als OpenEmail-Broadcasts hinaus.
  • Subject, HtmlBody oder TextBody bei einer Vorlagennachricht, mit ErrorCode 1123, weil die Vorlage sie liefert. TrackLinks mit dem Wert TextOnly, 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, ErrorCode 0 und Message OK. MessageID ist die OpenEmail-Nachrichten-ID, die GET /emails/{id} und Webhooks verwenden. Ein Header Idempotency-Key funktioniert 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 ErrorCode und ihre Message, und die anderen gehen trotzdem hinaus.
  • Fehler kommen als ErrorCode und Message zurück. Ein fehlender oder unbekannter Schlüssel, oder einer ohne emails: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.