Мои проекты

Почтовый API Resend через Django Anymail

Создаём отдельный ключ отправки и подключаем HTTP API без самописного отправщика.

Урок 7 / 22 · Commentail 1.3.2

API подходит, когда ваш сервис выдаёт ключ для отправки по HTTPS. Commentail передаёт письмо Django backend; здесь таким backend будет Anymail для Resend. Это один из вариантов, а не обязательная регистрация для Commentail. Тариф, доступность сервиса и лимиты аккаунта проверьте до подключения.

Подготовим отправителя и ключ

Добавьте свой домен в Resend, внесите выданные записи в DNS и дождитесь проверки. Выберите адрес отправителя на подтверждённом домене. Для первого теста используйте разрешённого сервисом получателя.

Создайте отдельный API key для учебного сайта с правом отправки; полный доступ для доставки не нужен. Если доступно ограничение по домену, выберите учебный домен. Сохраните значение при создании: кабинет не показывает его повторно. В окружении задайте RESEND_API_KEY='YOUR_API_KEY' и DEFAULT_FROM_EMAIL='Comments <comments@YOUR_VERIFIED_DOMAIN>', как в уроке 5. Рабочие значения в статью и Git не вставляйте.

Установим backend

В окружении вашего сайта:

sh
python -m pip install django-anymail

В settings-файле:

python
import os

# Add once to the existing list.
INSTALLED_APPS += ["anymail"]
EMAIL_BACKEND = "anymail.backends.resend.EmailBackend"
DEFAULT_FROM_EMAIL = os.environ["DEFAULT_FROM_EMAIL"]
ANYMAIL = {
    "RESEND_API_KEY": os.environ["RESEND_API_KEY"],
    "REQUESTS_TIMEOUT": 20,
}

Добавляйте anymail только один раз. Если ANYMAIL уже существует, объедините настройки. Тайм-аут ограничен 20 секундами, что меньше стандартной аренды задания Commentail в 300 секунд. SMTP-параметры этому backend не нужны. Не задавайте одновременно два EMAIL_BACKEND: используется один активный транспорт.

Перезапустите сайт и обработчик. Проверьте конфигурацию и пройдите гостевую отправку из урока 6. Одна установка Anymail не подтверждает ключ и домен. Проверяйте событие отправки в Resend и реальное получение письма отдельно.

Очередь и расписание Commentail остаются теми же. Вторую очередь «для API» создавать не нужно. Не переносите повторы каждого письма в Celery: сроки и состояние уже хранит Commentail. Webhook для первого подключения не требуется. Если позже понадобится отслеживание доставки через webhook, настройте проверку подписи по документации Anymail и не оставляйте публичный обработчик без аутентификации.

В конце учебного эксперимента отзовите именно тестовый ключ. Если продолжаете использовать сайт, сначала замените его выделенным рабочим ключом и проверьте доставку после перезапуска.

Официальные инструкции: Anymail и Resend (на английском), установка Anymail (на английском), управление ключами Resend (на английском).

Другие уроки по этой задаче

Документация по теме

Была ли статья полезна?

Комментарии 0

Имя: до 40 символов.

После отправки мы пришлём письмо со ссылкой для подтверждения email.

Не более 5000 символов.

Опубликованных комментариев пока нет.