HB's Thoughts

Ако Вселената е отговорът, какъв е въпросът?!

1.09.2025 г.

Cloudflare и Email Binding

Илюстративно изображение за Cloudflare и Email Binding

Не е нужно да имате имейл сървър, за да изпращате писма с Cloudflare Worker. Достатъчно е Cloudflare да валидира ваш имейл адрес, който ползвате и той ще изпрати входящите имейли към него.

Изисквания

Има 3 неща, с които трябва да разполагате във вашия Cloudflare акаунт, за да можете да изпращате имейли:

  1. Домейн - Трябва да имате активен домейн във вашия Cloudflare акаунт. Това не значи, че трябва да е купен от тях - достатъчно е да настроите DNS записите си, да сочат към Cloudflare.
  2. Имейл - Трябва да имате активен имейл адрес. Не е нужно да е свързан с домейна от предната точка. Спокойно може да е gmail акаунт, или който и да е друг, до който имате пълен достъп. Това може да е й имейла с който се логвате в Cloudflare. Този имейл трябва да е добавен към 'Destination addresses' в настройките на 'Email Routing' на домейна от предната точка, което ще го направи и активен.
  3. Routing rules - Трябва да имате добавен имейл адрес в 'Routing rules' на 'Email Routing'. Този адрес е част от домейна от първа точка и ще се ползва, да препраща писмата към имейла от предната точка.

Май го описах малко сложно, но като започнете да добавяте настройките една след друга ще го разберете правилно.

Binding

Към Nuxt проекта ви, който използва Cloudflare Worker, би трябвало да има wrangler.jsonc или wrangler.toml файл за конфигурация. Към него трябва да добавите следните настройки:

// wrangler.jsonc
{
  "send_email": [
    {
      "name": "INFO_EMAIL", // свободен текст - добре е да има смисъл
      "destination_address": "your@valid.email" // имейла от 2ра точка горе
    }
  ]
}

Това са всички първоначални настройки на средата, за да заработи машината. Не забравяйте да актуализирате типовете на Cloudflare.

npx wrangler types

Използване

Най-лесно е към Nitro средата да добавите един API endpoint. Например /api/send-info-email. Този endpoint трябва да инициализира Cloudflare binding-а, за да го ползваме директно. Това е най-яката част. Става с един ред:

// Достъп до Email binding
const env = event.context.cloudflare?.env;

И както може би се досещате env ви дава пълен достъп до Email binding-а и може да пращате на воля писма.

// Изпращане на имейл
await env.INFO_EMAIL.send({
  sender,
  recipient,
  content
});

Екстремно просто и адски елегантно решение. DX на MAX.



Компетентност:Маниак

🖖Live long and prosper