Отправка писем с помощью AWS SDK для JavaScript
Важно
Часть ресурсов, необходимых для прохождения практического руководства, доступны только в регионе Россия.
В этом руководстве вы научитесь отправлять электронные письма через Yandex Cloud Postbox с использованием AWS SDK для JavaScript
Чтобы начать отправлять электронные письма:
- Подготовьте облако к работе.
- Настройте директорию для аутентификационных данных.
- Создайте и запустите приложение.
- Проверьте результат.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры входят:
- плата за использование Yandex Cloud Postbox (см. тарифы Yandex Cloud Postbox);
- плата за публичные DNS-запросы и зоны DNS, если вы создаете ресурсную запись в Cloud DNS (см. тарифы Cloud DNS).
Подготовьте ресурсы
- Создайте сервисный аккаунт.
- Назначьте сервисному аккаунту роль
postbox.sender
. - Создайте статический ключ доступа для сервисного аккаунта. Сохраните идентификатор и секретный ключ.
- Создайте адрес.
- Пройдите проверку владения доменом.
Настройте директорию для аутентификационных данных
-
Создайте директорию для хранения аутентификационных данных и перейдите в нее:
Для macOS и Linux:
mkdir ~/.aws/
Для Windows:
mkdir C:\Users\<имя_пользователя>\.aws\
-
В директории
.aws
создайте файлcredentials
и скопируйте в него аутентификационные данные, полученные при создании статического ключа доступа:[default] aws_access_key_id = <идентификатор_статического_ключа> aws_secret_access_key = <секретный_ключ>
-
Создайте файл
config
с параметрами региона по умолчанию и скопируйте в него следующую информацию:[default] region = kz1 endpoint_url = https://postbox.cloud.yandex.net
Использование переменных окружения
AWS SDK по умолчанию использует аутентификационные данные из переменных окружения, если они заданы. Эти переменные имеют приоритет над аутентификационными данными, которые указаны в файле .aws/credentials
.
Поддерживаются следующие переменные окружения:
AWS_ACCESS_KEY_ID
— идентификатор статического ключа;AWS_SECRET_ACCESS_KEY
— секретный ключ.
Чтобы задать переменные окружения, выполните следующие действия в зависимости от вашей операционной системы:
В терминале выполните команду:
export AWS_ACCESS_KEY_ID=<идентификатор_статического_ключа>
export AWS_SECRET_ACCESS_KEY=<секретный_ключ>
В PowerShell выполните команду:
$Env:AWS_ACCESS_KEY_ID=<идентификатор_статического_ключа>
$Env:AWS_SECRET_ACCESS_KEY=<секретный_ключ>
Создайте и запустите приложение
-
Получите код приложения:
РепозиторийВручную-
Склонируйте репозиторий:
git clone https://github.com/yandex-cloud-examples/yc-postbox-examples
- Перейдите в папку в склонированном репозитории
javascript/
. -
В файле
main.js
укажите данные:-
В поле
SENDER
— электронную почту отправителя.Домен электронной почты отправителя должен совпадать с указанным в адресе Yandex Cloud Postbox, созданном при подготовке к работе. Например, если домен, на который вы подтвердили владение, —
yourdomain.com
, можно указать электронную почтуnoreply@yourdomain.com
илиadmin@yourdomain.com
, аuser@mail.yourdomain.com
— нельзя. -
В поле
RECIPIENT
— электронную почту получателя. Например:receiver@yourdomain.com
. Далее для проверки вам потребуется доступ к этой электронной почте.
-
-
Создайте папку
postbox-javascript
и перейдите в нее. -
Создайте файл
main.js
и вставьте в него код:// AWS SDK for JavaScript v3 (ESM) import { SESv2Client, SendEmailCommand } from '@aws-sdk/client-sesv2'; // Адрес отправителя должен быть подтвержден с помощью Amazon SES. const SENDER = "<адрес_отправителя>"; // Адрес получателя. const RECIPIENT = "<адрес_получателя>"; // Тема письма. const SUBJECT = "Yandex Cloud Postbox Test via AWS SDK for JavaScript v3"; // HTML-текст письма. const HTML_BODY = `<h1>Amazon SES Test Email (AWS SDK for JavaScript v3)</h1> <p>This email was sent with <a href='https://yandex.cloud/ru/docs/postbox/quickstart'>Yandex Cloud Postbox</a> using the <a href='https://aws.amazon.com/sdk-for-javascript/'>AWS SDK for JavaScript v3</a>.</p>`; // Текст письма для почтовых клиентов без поддержки HTML. const TEXT_BODY = "This email was sent with Yandex Cloud Postbox using the AWS SDK for JavaScript v3."; // Кодировка символов в письме. const CHARSET = "UTF-8"; // Основная функция async function main() { // Создайте клиент SES с эндпоинтом для Yandex Cloud Postbox const client = new SESv2Client({ region: 'kz1', endpoint: 'https://postbox.cloud.yandex.net', // По умолчанию SDK использует цепочку поставщиков учетных данных по умолчанию. // Вы можете использовать статические учетные данные, раскомментировав и изменив следующие строки: // credentials: { // accessKeyId: 'accessKeyID', // secretAccessKey: 'secretAccessKey', // }, }); // Сборка письма. const params = { Destination: { ToAddresses: [RECIPIENT], }, Content: { Simple: { Subject: { Charset: CHARSET, Data: SUBJECT, }, Body: { Html: { Charset: CHARSET, Data: HTML_BODY, }, Text: { Charset: CHARSET, Data: TEXT_BODY, }, }, }, }, FromEmailAddress: SENDER, }; try { // Создание команды. const command = new SendEmailCommand(params); // Отправка письма. const data = await client.send(command); console.log(data.MessageId); } catch (err) { console.error("Error sending email:", err); throw err; } } // Запуск основной функции. main().catch(err => { console.error("Unhandled error:", err); process.exit(1); });
-
В файле
main.js
укажите данные:-
В поле
SENDER
— электронную почту отправителя.Домен электронной почты отправителя должен совпадать с указанным в адресе Yandex Cloud Postbox, созданном при подготовке к работе. Например, если домен, на который вы подтвердили владение, —
yourdomain.com
, можно указать электронную почтуnoreply@yourdomain.com
илиadmin@yourdomain.com
, аuser@mail.yourdomain.com
— нельзя. -
В поле
RECIPIENT
— электронную почту получателя. Например:receiver@yourdomain.com
. Далее для проверки вам потребуется доступ к этой электронной почте.
-
-
Создайте файл
package.json
и вставьте в него код:{ "name": "yc-postbox-example", "version": "1.0.0", "description": "Example of sending emails through Yandex Cloud Postbox using AWS SDK for JavaScript", "main": "main.js", "type": "module", "scripts": { "start": "node main.js" }, "dependencies": { "@aws-sdk/client-sesv2": "^3.821.0" }, "license": "MIT" }
-
-
Установите зависимости:
npm install
Результат:
added 79 packages, and audited 80 packages in 3s 3 packages are looking for funding run `npm fund` for details found 0 vulnerabilities
-
Запустите приложение:
npm start
Результат:
> yc-postbox-example@1.0.0 start > node main.js DB6TZYXAOBH1.2E2Q5********@ingress2-klg
Проверьте результат
Убедитесь, что на адрес получателя, заданный в файле main.js
в поле RECIPIENT
, пришло письмо с указанными параметрами.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы: