← Cloudflare Workers / workers / tutorials
Отправка писем через Resend
В этом руководстве вы узнаете, как отправлять транзакционные письма из Workers с помощью Resend ↗. По окончании этого руководства вы сможете:
- Создайте Worker для отправки писем.
- Зарегистрируйтесь и добавьте домен Cloudflare в Resend.
- Отправляйте письма из своего Worker с помощью Resend.
- Храните API-ключи безопасно с помощью secrets.
Предварительные требования
Чтобы продолжить это руководство, вам потребуется:
- Есть Аккаунт Cloudflare ↗, если у вас его ещё нет.
- A зарегистрировано домен.
- Установлено npm ↗.
- A Аккаунт Resend ↗.
Создайте проект Worker
Для начала используйте C3 чтобы создать проект Worker в командной строке и ответить на вопросы:
npm create cloudflare@latestТакже для ускорения можно использовать аргументы командной строки:
npm create cloudflare@latest email-with-resend -- --type=hello-world --ts=false --git=true --deploy=falseЭто создаёт простой Worker «hello world» со следующим содержимым:
export default {
async fetch(request, env, ctx) {
return new Response("Hello World!");
},
};Добавление домена в Resend
Если у вас ещё нет аккаунта Resend, вы можете зарегистрировать бесплатный аккаунт здесь ↗. После регистрации перейдите в Domains с помощью бокового меню и нажмите кнопку добавления нового домена. В открывшемся окне введите домен, который нужно добавить, а затем выберите регион.
Далее вам будет показан список DNS-записей, которые нужно добавить к домену Cloudflare. В панели управления Cloudflare выберите домен, указанный ранее, и перейдите в DNS > Records. Скопируйте DNS записи (DKIM, SPF и DMARC) из Resend в ваш домен Cloudflare.
После этого вернитесь в Resend и нажмите Verify DNS Records кнопку. Если все записи настроены правильно, статус вашего домена должен измениться на Verified.
Наконец, перейдите к API Keys с боковым меню, чтобы создать ключ API. Дайте ключу понятное название и назначьте нужные разрешения. Нажмите кнопку добавления ключа, а затем скопируйте ключ API в надежное место.
Отправка писем из своего Worker
Финальный шаг: собрать всё вместе в Worker. Откройте терминал в каталоге Worker, который вы создали ранее. Затем установите Resend SDK:
npm i resendВ Worker импортируйте и используйте библиотеку Resend следующим образом:
import { Resend } from "resend";
export default {
async fetch(request, env, ctx) {
const resend = new Resend("your_resend_api_key");
const { data, error } = await resend.emails.send({
from: "[email protected]",
to: "[email protected]",
subject: "Hello World",
html: "<p>Hello from Workers</p>",
});
return Response.json({ data, error });
},
};Чтобы протестировать код локально, выполните следующую команду и перейдите по адресу http://localhost:8787/ ↗ в браузере:
npm startРазверните ваш Worker с помощью npm run deploy.
Перенесите API-ключи в Secrets
Конфиденциальную информацию, такую как ключи API и токены, всегда следует хранить в секретах. Все секреты шифруются для дополнительного уровня защиты. Тем не менее рекомендуется перенести свой ключ API в секрет и обращаться к нему из окружения своего Worker.
Чтобы добавить секреты для локальной разработки, создайте .dev.vars файл, который работает точно так же, как .env файле:
RESEND_API_KEY=your_resend_api_keyТакже убедитесь, что секрет добавлен в развёрнутый Worker, выполнив команду:
npx wrangler secret put RESEND_API_KEYДобавленный секрет доступен через env параметр, переданный обработчику события fetch вашего Worker:
import { Resend } from "resend";
export default {
async fetch(request, env, ctx) {
const resend = new Resend(env.RESEND_API_KEY);
const { data, error } = await resend.emails.send({
from: "[email protected]",
to: "[email protected]",
subject: "Hello World",
html: "<p>Hello from Workers</p>",
});
return Response.json({ data, error });
},
};И наконец разверните это обновление с помощью npm run deploy.