← Cloudflare Workers / workers / tutorials
Отправка писем через Postmark
В этом руководстве вы узнаете, как отправлять транзакционные письма из Workers с помощью Postmark ↗. По окончании этого руководства вы сможете:
- Создайте Worker для отправки писем.
- Зарегистрируйтесь и добавьте домен Cloudflare в Postmark.
- Отправляйте письма из своего Worker с помощью Postmark.
- Храните API-ключи безопасно с помощью secrets.
Предварительные требования
Чтобы продолжить это руководство, вам потребуется:
- Есть Аккаунт Cloudflare ↗, если у вас его ещё нет.
- A зарегистрировано домен.
- Установлено npm ↗.
- A аккаунт Postmark ↗.
Создайте проект Worker
Для начала используйте C3 чтобы создать проект Worker в командной строке и ответить на вопросы:
npm create cloudflare@latestТакже для ускорения можно использовать аргументы командной строки:
npm create cloudflare@latest email-with-postmark -- --type=hello-world --ts=false --git=true --deploy=falseЭто создаёт простой Worker «hello world» со следующим содержимым:
export default {
async fetch(request, env, ctx) {
return new Response("Hello World!");
},
};Добавление домена в Postmark
Если у вас ещё нет аккаунта Postmark, вы можете зарегистрировать бесплатный аккаунт здесь ↗. После регистрации проверьте почту: там будет ссылка для подтверждения подписи отправителя. Это подтверждает адрес и позволяет отправлять письма с зарегистрированного адреса электронной почты.
Чтобы разрешить отправку почты с других адресов вашего домена, перейдите в Sender Signatures в панели Postmark, Add Domain or Signature > Add Domain, затем введите свой домен и нажмите Verify Domain.
Далее вам будет показан список DNS-записей, которые нужно добавить к домену Cloudflare. В панели управления Cloudflare выберите домен, указанный ранее, и перейдите в DNS > Records. Скопируйте DNS записи (DKIM и Return-Path) из Postmark в ваш домен Cloudflare.
После этого вернитесь в Postmark и нажмите Verify кнопки. Если все записи настроены правильно, статус вашего домена должен измениться на Verified.
Чтобы получить свой API-токен, перейдите в Servers вкладку, затем My First Server > API Tokens, затем скопируйте свой API-ключ в надёжное место.
Отправка писем из своего Worker
Финальный шаг: собрать всё вместе в Worker. В своём Worker отправьте POST-запрос с fetch к email API Postmark и укажите ваш токен и тело сообщения:
export default {
async fetch(request, env, ctx) {
return await fetch("https://api.postmarkapp.com/email", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Postmark-Server-Token": "your_postmark_api_token_here",
},
body: JSON.stringify({
From: "[email protected]",
To: "[email protected]",
Subject: "Hello World",
HtmlBody: "<p>Hello from Workers</p>",
}),
});
},
};Чтобы протестировать код локально, выполните следующую команду и перейдите по адресу http://localhost:8787/ ↗ в браузере:
npm startРазверните ваш Worker с помощью npm run deploy.
Перенесите API-токен в Secrets
Конфиденциальную информацию, такую как ключи API и токены, всегда следует хранить в секретах. Все секреты шифруются для дополнительного уровня защиты. Тем не менее рекомендуется перенести свой токен API в секрет и обращаться к нему из окружения своего Worker.
Чтобы добавить секреты для локальной разработки, создайте .dev.vars файл, который работает точно так же, как .env файле:
POSTMARK_API_TOKEN=your_postmark_api_token_hereТакже убедитесь, что секрет добавлен в развёрнутый Worker, выполнив команду:
npx wrangler secret put POSTMARK_API_TOKENДобавленный секрет доступен через env параметр, переданный обработчику события fetch вашего Worker:
export default {
async fetch(request, env, ctx) {
return await fetch("https://api.postmarkapp.com/email", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Postmark-Server-Token": env.POSTMARK_API_TOKEN,
},
body: JSON.stringify({
From: "[email protected]",
To: "[email protected]",
Subject: "Hello World",
HtmlBody: "<p>Hello from Workers</p>",
}),
});
},
};И наконец разверните это обновление с помощью npm run deploy.