← Cloudflare Email Service / email-service / local-development
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
- Zaregistrujte si účet Cloudflare ↗.
- 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"Vzdálené vazby (doporučeno)
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 = truePoté 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 devOdeš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>.txtObsah 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
- Nasaďte svůj odesílací worker: Začínáme s odesíláním e-mailů
- Pokročilé vzory: Příklady pro Email Sending