INTEGRITY Dokumentace

Email Sending

Otestujte funkci odesílání e-mailů lokálně pomocí wrangler dev k simulaci doručování e-mailů a ověření logiky odesílání před nasazením.

Předpoklady

  1. Zaregistrujte si účet Cloudflare ↗.
  2. Nainstalujte Node.js ↗.

Správce verzí Node.js

Použijte správce verzí Node, jako je Volta ↗ nebo nvm ↗ abyste se vyhnuli problémům s oprávněními a mohli měnit verze Node.js. Wrangler, o kterém se dozvíte dále v této příručce, vyžaduje verzi Node 16.17.0 nebo novější.

Konfigurace

Nakonfigurujte soubor Wrangler s email binding:

{
	"name": "email-sending-worker",
	// Set this to today's date
	"compatibility_date": "2026-08-28",
	"send_email": [{ "name": "EMAIL" }],
}
name = "email-sending-worker"
# Set this to today's date
compatibility_date = "2026-08-28"

[[send_email]]
name = "EMAIL"

Použití vzdálené bindings je doporučeným způsobem lokálního vývoje s Email Service. Ve výchozím nastavení wrangler dev simuluje e-mailový binding lokálně, e-maily se zapisují do konzole, ale ve skutečnosti se neodesílají. U vzdálených bindingů běží váš Worker lokálně, ale reálné e-maily odesílá prostřednictvím Email Service.

Nastavte remote: true na e-mailovém bindingu ve vaší konfiguraci Wrangler:

{
	"name": "email-sending-worker",
	// Set this to today's date
	"compatibility_date": "2026-08-28",
	"send_email": [
		{
			"name": "EMAIL",
			"remote": true,
		},
	],
}
name = "email-sending-worker"
# Set this to today's date
compatibility_date = "2026-08-28"

[[send_email]]
name = "EMAIL"
remote = true

Poté spusťte wrangler dev jako obvykle. Volání na env.EMAIL.send() odešle skutečné e-maily prostřednictvím Email Service, zatímco kód Workeru běží lokálně.

Lokální simulace

Při spuštění wrangler dev bez vzdálených vazeb se e-mailová vazba simuluje lokálně. E-maily se neodesílají, obsah e-mailu se místo toho zaznamenává do konzole a ukládá do lokálních souborů pro kontrolu.

Základní odesílací Worker

export default {
	async fetch(request, env, ctx) {
		if (request.method !== "POST") {
			return new Response("Method not allowed", { status: 405 });
		}

		try {
			const emailData = await request.json();

			console.log("Sending email:", {
				to: emailData.to,
				from: emailData.from,
				subject: emailData.subject,
			});

			const response = await env.EMAIL.send(emailData);

			return new Response(
				JSON.stringify({
					success: true,
					id: response.messageId,
				}),
				{
					headers: { "Content-Type": "application/json" },
				},
			);
		} catch (error) {
			return new Response(
				JSON.stringify({
					success: false,
					error: error.message,
				}),
				{
					status: 500,
					headers: { "Content-Type": "application/json" },
				},
			);
		}
	},
};

Místní testování

Spusťte svůj vývojový server:

npx wrangler dev

Odešlete testovací e-mail:

curl -X POST http://localhost:8787/ \
  -H "Content-Type: application/json" \
  -d '{
    "to": "[email protected]",
    "from": "[email protected]",
    "subject": "Test Email",
    "html": "<h1>Hello from Wrangler!</h1>",
    "text": "Hello from Wrangler!"
  }'

Wrangler zobrazí výstup podobný tomuto:

[wrangler:info] send_email binding called with MessageBuilder:
From: [email protected]
To: [email protected]
Subject: Test Email

Text: /tmp/miniflare-.../files/email-text/<message-id>.txt

Obsah e-mailu (text a HTML) se ukládá do lokálních souborů, které si můžete prohlédnout a ověřit strukturu e-mailu před nasazením.

Známá omezení

Binární přílohy

Lokální vývoj simuluje send_email binding lokálně, ale ArrayBuffer hodnoty v příloze content nelze lokálním simulátorem serializovat. Pokud předáte ArrayBuffer (například u příloh typu obrázek nebo PDF) uvidíte chybu podobnou této:

Cannot serialize value: [object ArrayBuffer]

Náhradní řešení: Pro textové přílohy během místního vývoje použijte obsah typu string. Chcete-li otestovat binární přílohy (obrázky, PDF), nasaďte svého Workera pomocí npx wrangler deploy a otestujte oproti nasazené verzi.

Toto omezení platí pouze pro lokální vývoj: ArrayBuffer obsah funguje správně u nasazených Workerů.

Další kroky