Průvodce
Přechod ze SendGridu
Přejděte ze SendGridu na Emailit. Namapujte pojmy, pole API, nastavení SMTP a názvy událostí Event Webhook a pak přeneste blokované adresy, dynamic templates a DNS.
Tento průvodce mapuje pojmy, volání API, webhooky, blokované adresy a šablony ze SendGridu 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
| SendGrid | Emailit |
|---|---|
| Účet a subusers | Účet a workspace. Každý workspace má vlastní domény, klíče, členy a kredity. |
| API key s oprávněními | API klíč: Full Access, nebo Sending Only, volitelně omezený na jednu doménu |
| Domain authentication | Odesílací doména se záznamy SPF, DKIM a return path |
| Link branding | Subdoména pro měření, CNAME například go.acme.com |
| Single sender verification | Není dostupné. Každá adresa odesílatele musí být na ověřené doméně. |
| Dynamic templates | Šablony s aliasem a verzemi vykreslované jazykem Temple |
| Event Webhook | Webhooky |
| Inbound Parse | Příchozí e-maily |
| Suppressions | Blokované adresy |
| Unsubscribe groups | Není dostupné. Použijte seznamy kontaktů a odkazy pro odhlášení v kampaních. |
| Marketing contacts a lists | Kontakty a seznamy kontaktů |
| Single Sends | Kampaně |
| Email Activity | Email APIEmails a Email APILogs |
| Categories a custom args | meta |
| Dedicated IPs a IP pools | Dedikované IP adresy na vyžádání |
| Email address validation | Ověřování e-mailů |
Upravte volání API
Z POST /v3/mail/send v SendGridu se stane POST /v2/emails. Požadavek je plošší: nemá personalizations a adresy jsou prosté řetězce.
curl https://api.sendgrid.com/v3/mail/send \
-H "Authorization: Bearer $SENDGRID_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"personalizations": [{ "to": [{ "email": "ada@example.com" }] }],
"from": { "email": "hello@acme.com", "name": "Acme" },
"subject": "Your receipt",
"content": [
{ "type": "text/plain", "value": "Thanks for your order." },
{ "type": "text/html", "value": "<p>Thanks for your order.</p>" }
]
}'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>"
}'| SendGrid | Emailit |
|---|---|
Authorization: Bearer SG.… |
Authorization: Bearer secret_… |
from: { email, name } |
from: "Name <email>" |
personalizations[].to[] |
to, řetězec nebo pole až 50 adres |
personalizations[].cc[], bcc[] |
cc, bcc |
reply_to: { email } |
reply_to |
subject |
subject |
content[] s text/plain a text/html |
text a html |
template_id |
template, ID nebo alias šablony |
personalizations[].dynamic_template_data |
variables |
attachments[] s content, filename, type, content_id |
attachments[] s content, filename, content_type, content_id, nebo s url místo content |
headers |
headers |
custom_args, categories |
meta, objekt s řetězcovými hodnotami, který se vrací v událostech webhooků |
send_at (unixový čas) |
scheduled_at, které přijímá stejný unixový čas, ISO 8601 nebo běžnou angličtinu |
tracking_settings.open_tracking a click_tracking |
tracking: { "loads": true, "clicks": true } |
asm (unsubscribe groups) |
Není dostupné |
202 Accepted s hlavičkou X-Message-Id |
200 s tělem JSON: id, status: "accepted" a ids s jedním ID pro každého příjemce |
Každý příjemce v požadavku Emailitu se stane samostatným e-mailem s vlastním ID. Pokud chcete různým lidem poslat různé proměnné, což SendGrid řeší několika personalizations, odešlete pro každého příjemce samostatný požadavek. Přidejte hlavičku Idempotency-Key, aby bylo opakování bezpečné. Viz Odeslání e-mailu.
Změňte nastavení SMTP
| Nastavení | SendGrid | Emailit |
|---|---|---|
| Server | smtp.sendgrid.net |
smtp.emailit.com |
| Port | 587, 465, 2525 nebo 25 |
587 (STARTTLS), 465 (TLS), 2525, 2587 nebo 25 |
| Uživatelské jméno | apikey |
emailit |
| Heslo | Váš API klíč SendGridu | Váš API klíč Emailitu |
Emailit nečte hlavičku X-SMTPAPI. Odstraňte ji a měření místo toho nastavte na doméně. Viz Nastavení SMTP.
Namapujte události webhooků
| Událost SendGridu | Událost Emailitu |
|---|---|
processed |
email.accepted (jen API) |
deferred |
email.attempted |
delivered |
email.delivered |
bounce |
email.bounced |
dropped |
email.suppressed, když je příjemce na seznamu blokovaných adres |
open |
email.loaded |
click |
email.clicked |
spamreport |
email.complained |
unsubscribe, group_unsubscribe |
email.unsubscribed, jen u e-mailů z kampaní |
| POST z Inbound Parse | email.received, pak načtěte obsah přes GET /emails/{id} |
Stejně jako SendGrid posílá Emailit pole JSON s událostmi. Liší se pole:
- Název události je v
typea e-mail vdata.object. Místosg_message_idpoužívejtedata.object.id(IDem_z odpovědi na odeslání) a místoemailpoužívejtedata.object.to. - Vaše hodnoty
metase vracejí vdata.object.meta. - Emailit podepisuje požadavky pomocí HMAC-SHA256 místo veřejného klíče ECDSA, který používá SendGrid. Ověřujte
X-Emailit-Signaturesvým tajným klíčemwhsec_. 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
-
V SendGridu vyexportujte Bounces, Spam Reports, Invalid Emails a Global Unsubscribes, ze stránek suppressions nebo přes endpointy API
/v3/suppression/*. Blocks jsou obvykle dočasné, takže je můžete vynechat. -
Sestavte jedno CSV se sloupci
email,type,reason:email,type,reason old-address@example.com,recipient,sendgrid bounce angry@example.com,recipient,sendgrid spam reportPro adresy, které nikdy nesmí dostat e-mail, použijte typ
recipient. Blokuje odeslání přes API, SMTP i kampaně. Typybounce,complaintaunsubscribezastavují jen kampaně. -
V Email APISuppressions vyberte Import a nahrajte soubor. Každý soubor může mít až 10 000 řádků a nejvýše 8 MB, takže větší seznamy rozdělte. Duplicity se přeskočí.
Lidi odhlášené přes group unsubscribes z marketingových e-mailů naimportujte jako kontakty s nastaveným unsubscribed, místo abyste je blokovali pro veškerou poštu. Viz Správa blokovaných adres.
Přesuňte šablony
Vyexportujte HTML každé dynamic template ze SendGridu a pak ho naimportujte v Email MarketingTemplates, nebo šablonu vytvořte přes API pro šablony. Dejte každé šabloně alias, například receipt, a odesílejte ji s "template": "receipt".
Oba jazyky používají dvojité složené závorky, ale Temple je menší než Handlebars:
| SendGrid (Handlebars) | Emailit (Temple) |
|---|---|
{{first_name}} |
{{first_name}} |
{{{html_block}}} |
{{html_block}}. Temple nikdy neescapuje HTML, proto vstupy od uživatelů escapujte sami. |
{{insert name "default=there"}} |
{{name|"there"}} |
{{#if plan}}…{{else}}…{{/if}} |
Stejně |
{{#each items}}…{{/each}} |
Nepodporuje se. Vykreslete seznam ve svém kódu a předejte ho jako jednu proměnnou. |
{{#equals plan "pro"}}…{{/equals}} |
Nepodporuje se. Předejte logickou hodnotu, například is_pro, a použijte {{#if is_pro}}. |
Viz Temple a Import a export šablon.
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 s CNAME záznamy domain authentication ani link branding ze SendGridu. Záznam DMARC ponechte. Po přepnutí provozu CNAME záznamy SendGridu odstraňte. Viz DNS záznamy odesílacích domén.
Pokud jste používali Inbound Parse, nasměrujte místo toho MX záznam svého názvu pro parse na Emailit. Pokud chcete ponechat stejný název, například parse.acme.com, nastavte přes API inbound_key domény na parse. 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