Перейти к содержанию

Email

Крошечный SMTP-клиент на стандартной библиотеке — без дополнительных зависимостей.

Регистрация

# extensions.py
from endocore.extensions import EmailExtension

extensions = [
    EmailExtension(
        host="smtp.example.com", port=587, use_tls=True,
        username="apikey", password="…", default_from="no-reply@example.com",
    ),
]

Это регистрирует EmailClient как DI-провайдер под именем email (и по типу).

Отправка из обработчика

async def handler(request, email):         # инжектированный EmailClient
    email.send(
        to="user@example.com",
        subject="Welcome",
        body="Thanks for signing up!",
    )
    return Response.json({"sent": True})

HTML и несколько получателей

email.send(
    to=["a@example.com", "b@example.com"],
    subject="Report",
    body="<h1>Weekly report</h1>…",
    html=True,
    from_addr="reports@example.com",
)

Без расширения

from endocore.extensions import EmailClient

client = EmailClient(host="localhost", port=25)
client.send(to="a@b.com", subject="Hi", body="Hello")

Отправка в фоне

Отправка почты бывает медленной — верните её как фоновую задачу, чтобы клиент не ждал, либо поставьте в очередь через Celery ради ретраев.