Průvodce
Přechod z Postmarku
Přejděte z Postmarku na Emailit. Namapujte servery, message streams a tokeny, převeďte pole API, vyměňte nastavení SMTP a přesuňte webhooky, blokované adresy a šablony.
Tento průvodce mapuje pojmy, volání API, webhooky, blokované adresy a šablony z Postmarku na jejich ekvivalenty v Emailitu. Celkové pořadí a souběžný provoz obou poskytovatelů popisuje stránka Přechod na Emailit, přečtěte si ji jako první.
Principy
| Postmark | Emailit |
|---|---|
| Account | Účet |
| Server | Workspace, nebo jeden workspace s několika odesílacími doménami |
| Server API token | API klíč s oprávněním Sending Only, volitelně omezený na jednu doménu |
| Account API token | API klíč s oprávněním Full Access |
| Transactional message stream | E-mailové API a SMTP relay |
| Broadcast message stream | Kampaně pro seznamy kontaktů, nebo API s vlastní hlavičkou List-Unsubscribe |
| Inbound message stream | Příchozí e-maily na subdoméně, například inbound.acme.com |
| Sender signatures a domény | Odesílací domény. Sender signatures pro jednotlivé adresy nejsou dostupné. |
| Templates a layouts | Šablony s aliasem a verzemi. Layouty neexistují. |
| Webhooky pro každý message stream | Webhooky pro celý workspace |
| Suppressions pro každý message stream | Jeden seznam blokovaných adres pro každý workspace |
| Activity | Email APIEmails a Email APILogs |
Tag a Metadata |
meta |
Pokud chcete oddělit reputaci transakční a marketingové pošty, odesílejte je z různých domén nebo subdomén, například mail.acme.com pro účtenky a news.acme.com pro newslettery.
Upravte volání API
Z POST /email s X-Postmark-Server-Token v Postmarku se stane POST /v2/emails s bearer tokenem. Názvy polí se mění z PascalCase na snake_case:
curl https://api.postmarkapp.com/email \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Postmark-Server-Token: $POSTMARK_SERVER_TOKEN" \
-d '{
"From": "Acme <hello@acme.com>",
"To": "ada@example.com",
"Subject": "Your receipt",
"TextBody": "Thanks for your order.",
"HtmlBody": "<p>Thanks for your order.</p>",
"MessageStream": "outbound"
}'curl https://api.emailit.com/v2/emails \
-H "Authorization: Bearer $EMAILIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "Acme <hello@acme.com>",
"to": "ada@example.com",
"subject": "Your receipt",
"text": "Thanks for your order.",
"html": "<p>Thanks for your order.</p>"
}'| Postmark | Emailit |
|---|---|
Hlavička X-Postmark-Server-Token |
Authorization: Bearer secret_… |
From |
from |
To, Cc, Bcc (řetězce oddělené čárkou) |
to, cc, bcc jako řetězec nebo pole, každé až 50 adres |
ReplyTo |
reply_to |
Subject |
subject |
HtmlBody, TextBody |
html, text |
Headers: [{ "Name": "…", "Value": "…" }] |
headers: { "Name": "Value" } |
Metadata, Tag |
meta, vrací se v událostech webhooků |
TrackOpens, TrackLinks |
tracking: { "loads": true, "clicks": true } |
Attachments[] s Name, Content, ContentType, ContentID |
attachments[] s filename, content, content_type, content_id |
MessageStream |
Není potřeba |
POST /email/withTemplate s TemplateAlias nebo TemplateId a TemplateModel |
Stejný POST /v2/emails s template (alias nebo ID) a variables |
Odpověď s MessageID a ErrorCode: 0 |
200 s id (em_…), status: "accepted" a ids pro jednotlivé příjemce. Chyby používají stavové kódy HTTP. |
Emailit nemá endpoint pro dávky. Odešlete jeden požadavek na zprávu, každý až s 50 příjemci, a přidejte hlavičku Idempotency-Key, aby bylo opakování bezpečné. Viz Odeslání e-mailu.
Změňte nastavení SMTP
| Nastavení | Postmark | Emailit |
|---|---|---|
| Server | smtp.postmarkapp.com |
smtp.emailit.com |
| Port | 587, 2525 nebo 25 |
587 (STARTTLS), 465 (TLS), 2525, 2587 nebo 25 |
| Uživatelské jméno | Váš Server API token | emailit |
| Heslo | Váš Server API token | Váš API klíč Emailitu |
Emailit nečte hlavičky X-PM-*, například X-PM-Message-Stream nebo X-PM-Tag. Odstraňte je a měření místo toho nastavte na doméně. Viz Nastavení SMTP.
Namapujte události webhooků
| Webhook Postmarku | Událost Emailitu |
|---|---|
| Delivery | email.delivered |
| Bounce, typy hard bounce | email.bounced |
| Bounce, typy soft nebo transient | email.attempted, dokud Emailit opakuje doručení, pak email.bounced, pokud selžou všechny pokusy |
| Spam complaint | email.complained |
| Open | email.loaded |
| Click | email.clicked |
| Subscription change | email.unsubscribed u e-mailů z kampaní a suppression.created nebo suppression.deleted u blokací, které přidáte nebo odeberete přes API |
| Inbound | email.received, pak načtěte obsah přes GET /emails/{id} |
Emailit navíc posílá email.accepted, když API e-mail přijme, pro což Postmark žádný webhook nemá.
Mění se formát požadavku:
- Postmark posílá jeden záznam na požadavek a jeho typ uvádí v
RecordType. Emailit posílá pole JSON s až 100 událostmi, s názvem vtypea e-mailem vdata.object. - Místo
MessageIDpoužívejtedata.object.id, IDem_z odpovědi na odeslání. Vaše hodnotymetajsou vdata.object.meta. - Webhooky Postmarku se obvykle chrání přístupovými údaji pro základní autentizaci v URL. Emailit místo toho podepisuje každý požadavek: ověřujte
X-Emailit-SignaturevůčiX-Emailit-Timestampa vašemu tajnému klíčiwhsec_. Viz Podpis požadavku.
for (const event of req.body) {
const email = event.data.object;
if (event.type === 'email.bounced') markBounced(email.to, email.id);
if (event.type === 'email.complained') unsubscribe(email.to);
}Přesuňte blokované adresy
-
Vyexportujte suppressions každého message streamu v Postmarku, ze kterého odesíláte, ze stránky suppressions daného streamu nebo přes suppressions dump API. Zahrňte hard bounces, spam complaints i ruční blokace.
-
Sestavte jedno CSV se sloupci
email,type,reason:email,type,reason old-address@example.com,recipient,postmark hard bounce angry@example.com,recipient,postmark spam complaintPro adresy, které nikdy nesmí dostat e-mail, použijte typ
recipient. Blokuje odeslání přes API, SMTP i kampaně. Pro lidi, kteří se odhlásili jen z vašich rozesílek, použijte typunsubscribe, který zastaví kampaně, ale transakční e-maily propustí. -
V Email APISuppressions vyberte Import a nahrajte soubor. Každý soubor může mít až 10 000 řádků a nejvýše 8 MB. Duplicity se přeskočí.
Přesuňte šablony
Zkopírujte HTML každé šablony z Postmarku včetně jejího layoutu a pak ho naimportujte v Email MarketingTemplates, nebo šablonu vytvořte přes API pro šablony. Emailit layouty nemá, proto layout a obsah slučte do jedné šablony. Použijte stejný alias jako v Postmarku, aby změny v kódu zůstaly malé.
Šablony Postmarku používají Mustachio. Temple pokrývá jednoduché hodnoty a podmínky:
| Postmark (Mustachio) | Emailit (Temple) |
|---|---|
{{name}} |
{{name}} |
{{company.name}} |
{{company.name}} |
Sekce {{#company}}…{{/company}} |
{{#if company}}…{{/if}} a uvnitř úplné cesty, například {{company.name}} |
Invertované sekce {{^name}}…{{/name}} |
{{#if name}}{{else}}…{{/if}} |
{{#each items}}…{{/each}} |
Nepodporuje se. Vykreslete seznam ve svém kódu a předejte ho jako jednu proměnnou. |
TemplateModel |
variables |
Temple nikdy neescapuje HTML, proto vstupy od uživatelů escapujte dřív, než je předáte. Chybějící hodnota se vykreslí jako prázdný řetězec, pokud nepřidáte výchozí hodnotu, například {{name|"there"}}. Viz Temple.
Změňte DNS
Přidejte doménu v Email APIDomains a publikujte záznamy Emailitu. Používají vlastní názvy (emailit._domainkey, emailit.<domain> a volitelně go a inbound), takže nejsou v konfliktu se záznamem DKIM Postmarku ani s jeho CNAME záznamem return path pm-bounces. Záznam DMARC ponechte. Po přepnutí provozu záznamy Postmarku odstraňte. Viz DNS záznamy odesílacích domén.
Pokud zpracováváte příchozí poštu přes Postmark, přesuňte ji na příchozí subdoménu Emailitu a aktualizujte adresy, které vaše aplikace rozdává. Viz Nastavení příchozích e-mailů.
Další kroky
- Kontrolní seznam před ostrým provozem
- Nastavení webhooku
- Prioritní migrace: nechte inženýry Emailitu provést přechod s vámi