Přejít na obsah
Dokumentace

Průvodce

Přejděte z Resendu na Emailit. API jsou si blízká, takže změny jsou malé. Namapujte pole, nastavení SMTP a události webhooků, ověřujte podpisy a přesuňte kontakty.

Aktualizováno 1. 10. 2026

Tento průvodce mapuje pojmy, volání API, webhooky a šablony z Resendu na jejich ekvivalenty v Emailitu. Obě API mají podobnou strukturu, takže většina změn v kódu je malá. 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

Resend Emailit
Team Workspace. Každý workspace má vlastní domény, klíče, členy a kredity.
API key s oprávněním full access, nebo sending access API klíč: Full Access, nebo Sending Only, volitelně omezený na jednu doménu
Domains Odesílací domény
Audiences a contacts Kontakty a seznamy kontaktů
Broadcasts Kampaně
Webhooks Webhooky
Emails a logs Email APIEmails a Email APILogs
tags meta
Komponenty React Email HTML, které vykreslíte ve svém kódu, nebo šablony navržené ve webovém rozhraní

Upravte volání API

Z POST /emails v Resendu se stane POST /v2/emails v Emailitu s téměř stejnými poli. V Node.js:

Před: Resend
import { Resend } from 'resend';

const resend = new Resend(process.env.RESEND_API_KEY);

await resend.emails.send({
  from: 'Acme <hello@acme.com>',
  to: ['ada@example.com'],
  subject: 'Your receipt',
  html: '<p>Thanks for your order.</p>',
});
Po: Emailit
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',
  html: '<p>Thanks for your order.</p>',
});
Resend Emailit
Authorization: Bearer re_… Authorization: Bearer secret_…
from, subject, html, text, headers Stejně
to, cc, bcc Stejně, každé až 50 adres
reply_to (replyTo v SDK pro Node.js) reply_to
react (SDK pro Node.js) Není dostupné. Vykreslete komponentu do HTML a předejte html.
attachments[] s filename a content nebo path attachments[] s filename a content v base64 nebo s url. S content je povinné content_type.
tags: [{ "name": "…", "value": "…" }] meta: { "name": "value" }, vrací se v událostech webhooků
scheduled_at scheduled_at (ISO 8601, unixový čas nebo běžná angličtina)
Hlavička Idempotency-Key Hlavička Idempotency-Key, uchovává se 24 hodin
POST /emails/batch Není dostupné. Odešlete jeden požadavek na zprávu.
Odpověď { "id": "…" } 200 s id (em_…), 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. Když odesíláte několika příjemcům, mapa ids v odpovědi přiřazuje každé adrese její ID. Emailit také měří otevření a prokliky u jednotlivých e-mailů pomocí tracking: { "loads": true, "clicks": true }, jakmile má doména ověřenou subdoménu pro měření. Viz Odeslání e-mailu.

React Email

Pokud e-maily vytváříte v React Email, ponechte své komponenty a před odesláním je vykreslete sami:

JSX
import { render } from '@react-email/render';
import Receipt from './emails/receipt';

const html = await render(<Receipt order={order} />);
const text = await render(<Receipt order={order} />, { plainText: true });

await emailit.emails.send({ from, to, subject, html, text });

Změňte nastavení SMTP

Nastavení Resend Emailit
Server smtp.resend.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 resend emailit
Heslo Váš API klíč Resendu Váš API klíč Emailitu

Viz Nastavení SMTP.

Namapujte události webhooků

Událost Resendu Událost Emailitu
email.sent email.accepted (jen API)
email.delivered email.delivered
email.delivery_delayed email.attempted
email.bounced email.bounced
email.complained email.complained
email.opened email.loaded
email.clicked email.clicked
contact.created, contact.updated, contact.deleted Stejné názvy
domain.created, domain.updated, domain.deleted Stejné názvy

Mění se formát požadavku:

  • Resend posílá jednu událost na požadavek. Emailit posílá pole JSON s až 100 událostmi, proto tělo procházejte ve smyčce.
  • E-mail je v data.object. Místo data.email_id používejte data.object.id, ID em_ z odpovědi na odeslání. Vaše hodnoty meta jsou v data.object.meta.
  • Podpisy fungují jinak. Resend podepisuje webhooky přes Svix s hlavičkami svix-*. Emailit posílá X-Emailit-Signature, hexadecimální HMAC-SHA256 z <timestamp>.<raw body>, jehož klíčem je celý tajný klíč včetně předpony whsec_. Knihovna pro ověřování Svix fungovat nebude, přestože oba tajné klíče začínají na whsec_. Viz Podpis požadavku.
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 a kontakty

  1. Shromážděte všechny adresy, na které se e-mail nedoručil nebo jejichž příjemci si stěžovali, dokud jste používali Resend, z webového rozhraní Resendu nebo z událostí, které uložily vaše webhooky.

  2. Sestavte jedno CSV se sloupci email,type,reason:

    CSV
    email,type,reason
    old-address@example.com,recipient,resend bounce
    angry@example.com,recipient,resend complaint

    Pro adresy, které nikdy nesmí dostat e-mail, použijte typ recipient. Blokuje odeslání přes API, SMTP i kampaně.

  3. 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čí.

Pokud odesíláte broadcasts, vyexportujte každou audience v Resendu jako CSV a naimportujte ji v Email MarketingContacts přes Import do odpovídajícího seznamu kontaktů v Emailitu. Namapujte sloupec s odhlášením, aby lidé, kteří se odhlásili, zůstali odhlášení. Viz Import a export kontaktů.

Přesuňte šablony

Pokud e-maily vykreslujete v kódu, v React Email nebo čímkoli jiným, nic se nemění: odešlete HTML. Pokud máte šablony v Resendu, vytvořte je znovu v Email MarketingTemplates nebo přes API pro šablony, každé dejte alias a odesílejte ji s template a variables.

Šablony Emailitu používají Temple: {{name}}, vnořené hodnoty jako {{user.name}}, výchozí hodnoty jako {{name|"there"}} a {{#if plan}}…{{else}}…{{/if}}. Smyčky neexistují, proto seznamy vykreslujte ve svém kódu. Temple nikdy neescapuje HTML, proto vstupy od uživatelů escapujte dřív, než je předáte.

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áznamy Resendu, které obvykle leží na resend._domainkey a na subdoméně send. Záznam DMARC ponechte. Po přepnutí provozu záznamy Resendu odstraňte. Viz DNS záznamy odesílacích domén.

Další kroky

Byla tato stránka užitečná?

Děkujeme za zpětnou vazbu.

Děkujeme, čteme každou zprávu.