Průvodce
Přechod z Amazon SES
Přejděte z Amazon SES na Emailit. Namapujte identity, sandbox a kvóty, nahraďte volání SDK a přístupové údaje k SMTP a události SNS převeďte na podepsané webhooky.
Tento průvodce mapuje pojmy, volání API, oznámení o událostech, blokované adresy a šablony z Amazon SES 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
| Amazon SES | Emailit |
|---|---|
| Účet AWS v regionu | Workspace |
| Verified identities: domény a e-mailové adresy | Odesílací domény. Identity tvořené jednou e-mailovou adresou nejsou dostupné. |
| CNAME záznamy Easy DKIM | Jeden TXT záznam DKIM, emailit._domainkey |
| Custom MAIL FROM domain | Return path emailit.<your domain>, který má každá doména |
| Sandbox a žádost o production access | Režim sandbox a produkční přístup. V režimu sandbox můžete odesílat na e-maily účtů členů workspace. |
| Sending quota a maximum send rate | Limity odesílání: e-maily za sekundu a za den, obnovují se o půlnoci UTC |
| Přístupové údaje IAM a podpis SigV4 | API klíče v hlavičce Authorization: Bearer |
| SMTP credentials | Váš API klíč použitý jako heslo k SMTP |
| Configuration sets a event destinations (SNS, EventBridge, Firehose) | Webhooky, které posílají podepsaný JSON na váš endpoint HTTPS |
| Account-level suppression list | Seznam blokovaných adres workspace |
| Email templates | Šablony s aliasem a verzemi |
| Receipt rules | Příchozí e-maily s webhookem email.received |
| Email tags | meta |
| Dedicated IPs | Dedikované IP adresy na vyžádání |
| Contact lists | Kontakty, seznamy kontaktů a kampaně |
Upravte volání API
Volání SES se podepisují vašimi přístupovými údaji AWS, takže je obvykle provádíte přes AWS SDK. V Emailitu odešlete požadavek JSON s API klíčem, nebo použijete SDK Emailitu pro svůj jazyk. V Node.js:
import { SESv2Client, SendEmailCommand } from '@aws-sdk/client-sesv2';
const ses = new SESv2Client({ region: 'eu-west-1' });
await ses.send(new SendEmailCommand({
FromEmailAddress: 'Acme <hello@acme.com>',
Destination: { ToAddresses: ['ada@example.com'] },
Content: {
Simple: {
Subject: { Data: 'Your receipt' },
Body: {
Text: { Data: 'Thanks for your order.' },
Html: { Data: '<p>Thanks for your order.</p>' },
},
},
},
}));import { Emailit } from '@emailit/node';
const emailit = new Emailit(process.env.EMAILIT_API_KEY);
await emailit.emails.send({
from: 'Acme <hello@acme.com>',
to: 'ada@example.com',
subject: 'Your receipt',
text: 'Thanks for your order.',
html: '<p>Thanks for your order.</p>',
});Amazon SES (API v2 SendEmail) |
Emailit (POST /v2/emails) |
|---|---|
| Přístupové údaje AWS a podpis SigV4 | Authorization: Bearer secret_… |
FromEmailAddress |
from |
Destination.ToAddresses, CcAddresses, BccAddresses |
to, cc, bcc, každé až 50 |
ReplyToAddresses |
reply_to |
Content.Simple.Subject.Data |
subject |
Content.Simple.Body.Html.Data, Text.Data |
html, text |
Content.Template.TemplateName |
template, alias nebo ID |
Content.Template.TemplateData (řetězec JSON) |
variables (objekt JSON) |
Content.Raw (celá zpráva MIME) |
Odešlete zprávu MIME přes SMTP relay, nebo ji sestavte znovu z html, text a attachments |
EmailTags |
meta, vrací se v událostech webhooků |
ConfigurationSetName |
Není potřeba. Události chodí na vaše webhooky a měření se nastavuje pro doménu nebo pro jednotlivý e-mail přes tracking. |
Odpověď MessageId |
200 s id (em_…), message_id, status: "accepted" a ids pro jednotlivé příjemce |
Emailit navíc podporuje plánování přes scheduled_at a bezpečné opakování požadavků s hlavičkou Idempotency-Key, což SES při odesílání nenabízí. Viz Odeslání e-mailu.
Změňte nastavení SMTP
| Nastavení | Amazon SES | Emailit |
|---|---|---|
| Server | email-smtp.<region>.amazonaws.com |
smtp.emailit.com |
| Port | 587, 2587 nebo 25 (STARTTLS), 465 nebo 2465 (TLS) |
587, 2587, 2525 nebo 25 (STARTTLS), 465 (TLS) |
| Uživatelské jméno | Vaše uživatelské jméno SMTP v SES | emailit |
| Heslo | Vaše heslo SMTP v SES | Váš API klíč Emailitu |
Emailit nečte hlavičky SES, například X-SES-CONFIGURATION-SET. Odstraňte je. Viz Nastavení SMTP.
Namapujte oznámení o událostech
SES publikuje události přes configuration sets do SNS, EventBridge nebo Firehose. Emailit je posílá přímo na váš endpoint HTTPS jako webhooky, takže není potřeba odebírat ani potvrzovat žádné téma.
| Typ události SES | Událost Emailitu |
|---|---|
Send |
email.accepted (jen API) |
Delivery |
email.delivered |
DeliveryDelay |
email.attempted |
Bounce s bounceType Permanent |
email.bounced |
Bounce s bounceType Transient |
email.attempted, dokud Emailit opakuje doručení, pak email.bounced, pokud selžou všechny pokusy |
Complaint |
email.complained |
Open |
email.loaded |
Click |
email.clicked |
Subscription |
email.unsubscribed, jen u e-mailů z kampaní |
Reject, Rendering Failure |
Bez přímého ekvivalentu. Chyby v požadavku, například chybějící šablonu, vrací API hned a zprávy, které Emailit nedoručí, dostanou stav held. |
| Receipt rule s akcí SNS nebo Lambda | email.received, pak načtěte obsah přes GET /emails/{id} |
Mění se i obsah událostí:
- Každý požadavek Emailitu je pole JSON s až 100 událostmi, s názvem v
typea e-mailem vdata.object. - Místo
messageIdze SES používejtedata.object.id, IDem_z odpovědi na odeslání. Vaše hodnotymetajsou vdata.object.meta. - Místo kontroly podpisů zpráv SNS 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 account-level suppression list ze SES pomocí AWS CLI. Pokud výstup obsahuje
NextToken, opakujte příkaz s--next-token, dokud nebudete mít všechny stránky.aws sesv2 list-suppressed-destinations --output json \ | jq -r '(["email","type","reason"] | @csv), (.SuppressedDestinationSummaries[] | [.EmailAddress, "recipient", ("ses " + .Reason)] | @csv)' \ > suppressions.csvTím vznikne CSV se sloupci
email,type,reason. Každý řádek používá typrecipient, který blokuje odeslání přes API, SMTP i kampaně na danou adresu. -
Pokud si vedete vlastní seznam nedoručení a stížností z oznámení SNS, přidejte i tyto adresy.
-
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
Každou šablonu načtěte příkazem aws sesv2 get-email-template --template-name <name> a pak naimportujte její HTML v Email MarketingTemplates, nebo ji vytvořte přes API pro šablony. Jako alias v Emailitu použijte název šablony ze SES, pokud odpovídá formátu aliasu: malá písmena, číslice, - a _.
Šablony SES používají značky ve stylu Handlebars. Temple pokrývá běžné části:
| Amazon SES | Emailit (Temple) |
|---|---|
{{name}}, {{user.name}} |
Stejně |
{{#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. |
TemplateData jako řetězec JSON |
variables jako objekt JSON |
| Bez vestavěné výchozí hodnoty | {{name|"there"}} přidá náhradní hodnotu |
Temple nikdy neescapuje HTML, proto vstupy od uživatelů escapujte dřív, než je předáte. 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 s CNAME záznamy Easy DKIM ze SES ani se subdoménou custom MAIL FROM. Záznam DMARC ponechte. Viz DNS záznamy odesílacích domén.
Po přepnutí provozu odstraňte CNAME záznamy DKIM ze SES a záznamy custom MAIL FROM a smažte identity v SES. Pokud přijímáte poštu přes receipt rules v SES, přesuňte ji nejdřív na příchozí subdoménu Emailitu.
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