# 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](/cs/docs/migrate/), přečtěte si ji jako první.

## Principy

| Amazon SES | Emailit |
| --- | --- |
| Účet AWS v regionu | [Workspace](/cs/docs/workspaces/) |
| Verified identities: domény a e-mailové adresy | [Odesílací domény](/cs/docs/domains/). 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](/cs/docs/workspaces/production-access/). V režimu sandbox můžete odesílat na e-maily účtů členů workspace. |
| Sending quota a maximum send rate | [Limity odesílání](/cs/docs/limits/): e-maily za sekundu a za den, obnovují se o půlnoci UTC |
| Přístupové údaje IAM a podpis SigV4 | [API klíče](/cs/docs/developers/api-keys/) 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](/cs/docs/webhooks/), které posílají podepsaný JSON na váš endpoint HTTPS |
| Account-level suppression list | [Seznam blokovaných adres](/cs/docs/suppressions/) workspace |
| Email templates | [Šablony](/cs/docs/templates/) s aliasem a verzemi |
| Receipt rules | [Příchozí e-maily](/cs/docs/inbound/) s webhookem `email.received` |
| Email tags | `meta` |
| Dedicated IPs | [Dedikované IP adresy](/cs/docs/deliverability/dedicated-ips/) na vyžádání |
| Contact lists | [Kontakty](/cs/docs/contacts/), [seznamy kontaktů](/cs/docs/audiences/) a [kampaně](/cs/docs/campaigns/) |

## 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](/cs/docs/sdks/) pro svůj jazyk. V Node.js:

```javascript title="Před: Amazon SES (AWS SDK v3)"

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>' },
      },
    },
  },
}));
```

```javascript title="Po: Emailit"

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](/cs/docs/smtp/), 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](/cs/docs/email-api/send-email/).

## 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](/cs/docs/smtp/settings/).

## 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}`](/cs/docs/api-reference/emails/get/) |

Mění se i obsah událostí:

- Každý požadavek Emailitu je pole JSON s až 100 událostmi, s názvem v `type` a e-mailem v `data.object`.
- Místo `messageId` ze SES používejte `data.object.id`, ID `em_` z odpovědi na odeslání. Vaše hodnoty `meta` jsou v `data.object.meta`.
- Místo kontroly podpisů zpráv SNS ověřujte `X-Emailit-Signature` vůči `X-Emailit-Timestamp` a vašemu tajnému klíči `whsec_`. Viz [Podpis požadavku](/cs/docs/webhooks/request-signature/).

```javascript
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

1. 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.

```bash
aws sesv2 list-suppressed-destinations --output json \
  | jq -r '(["email","type","reason"] | @csv),
           (.SuppressedDestinationSummaries[] | [.EmailAddress, "recipient", ("ses " + .Reason)] | @csv)' \
  > suppressions.csv
```

   Tím vznikne CSV se sloupci `email,type,reason`. Každý řádek používá typ `recipient`, který blokuje odeslání přes API, SMTP i kampaně na danou adresu.

2. Pokud si vedete vlastní seznam nedoručení a stížností z oznámení SNS, přidejte i tyto adresy.

3. V **Email API → Suppressions** 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čí.

Viz [Správa blokovaných adres](/cs/docs/suppressions/manage/).

## 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 Marketing → Templates**, nebo ji vytvořte přes [API pro šablony](/cs/docs/api-reference/templates/create/). 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](/cs/docs/templates/temple/).

## Změňte DNS

Přidejte doménu v **Email API → Domains** 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](/cs/docs/domains/dns-records/).

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](/cs/docs/inbound/set-up/) Emailitu.

## Další kroky

- [Kontrolní seznam před ostrým provozem](/cs/docs/get-started/go-live/)
- [Nastavení webhooku](/cs/docs/webhooks/set-up/)
- [Prioritní migrace](/cs/docs/programs/priority-migration/): nechte inženýry Emailitu provést přechod s vámi

---
Zdroj: https://emailit.com/cs/docs/migrate/amazon-ses/
