Комплексное руководство по настройке Django для отправки электронных писем с помощью Mailgun

В этой статье мы рассмотрим различные способы настройки Django, популярной веб-инфраструктуры Python, для отправки электронных писем с помощью Mailgun, мощного поставщика услуг электронной почты. Мы предоставим примеры кода для каждого метода, чтобы помочь вам легко интегрировать функции электронной почты в ваши приложения Django.

Метод 1: использование почтового сервера Django
Django предоставляет встроенный почтовый сервер, который мы можем настроить для использования Mailgun в качестве поставщика услуг электронной почты. Чтобы настроить это, добавьте следующий код в файл settings.py вашего проекта Django:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.mailgun.org'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'your-mailgun-domain'
EMAIL_HOST_PASSWORD = 'your-mailgun-api-key'
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'your-email@example.com'

Обязательно замените 'your-mailgun-domain'и 'your-mailgun-api-key'на ваш фактический домен Mailgun и ключ API. Также установите 'your-email@example.com'в качестве адреса электронной почты отправителя по умолчанию.

Метод 2: использование класса EmailMessage Django
Другой подход — использовать класс EmailMessageDjango для отправки электронных писем через Mailgun. Вот пример:

from django.core.mail import EmailMessage
email = EmailMessage(
    'Hello',
    'Body goes here',
    'your-email@example.com',
    ['recipient1@example.com', 'recipient2@example.com'],
    ['bcc@example.com'],
    reply_to=['another-email@example.com'],
    headers={'Message-ID': 'foo'},
)
email.send()

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

Метод 3: прямое использование API Mailgun
Если вы предпочитаете больше контроля над процессом отправки электронной почты, вы можете использовать API Mailgun напрямую. Сначала установите библиотеку requests, запустив pip install requestsв среде вашего проекта. Затем в качестве примера используйте следующий код:

import requests
def send_email(subject, body, sender, recipients):
    return requests.post(
        "https://api.mailgun.net/v3/your-mailgun-domain/messages",
        auth=("api", "your-mailgun-api-key"),
        data={"from": sender, "to": recipients, "subject": subject, "text": body}
    )
response = send_email(
    'Hello',
    'Body goes here',
    'your-email@example.com',
    ['recipient1@example.com', 'recipient2@example.com']
)
if response.status_code == 200:
    print('Email sent successfully!')
else:
    print('Failed to send the email.')

Убедитесь, что вы заменили 'your-mailgun-domain'и 'your-mailgun-api-key'на свой фактический домен Mailgun и ключ API.

В этой статье мы рассмотрели три различных метода настройки Django для отправки электронных писем с помощью Mailgun. Независимо от того, предпочитаете ли вы встроенный почтовый сервер Django, класс EmailMessageили прямую интеграцию API, теперь у вас есть инструменты для легкого включения функций электронной почты в ваши приложения Django. Поэкспериментируйте с этими методами и выберите тот, который лучше всего соответствует требованиям вашего проекта.