Система почты в izTeamSlots построена на плагинах: есть базовый контракт MailProvider и набор конкретных реализаций.
| Провайдер | Модуль | Описание | Env-переменные |
|---|---|---|---|
boomlify |
backend/mail/boomlify.py |
Boomlify Temp Mail API, по умолчанию для слотов | BOOMLIFY_API_KEY, BOOMLIFY_DOMAIN, BOOMLIFY_TIME |
trickads |
backend/mail/trickads.py |
Временная почта для админов по умолчанию | — |
imap |
backend/mail/imap.py |
Любой IMAP-сервер | IMAP_HOST, IMAP_PORT, IMAP_SSL, IMAP_FOLDER |
create_provider(name)— создаёт провайдер по имени или черезMAIL_PROVIDERcreate_slot_provider(name)— создаёт провайдер для слотов черезSLOT_MAIL_PROVIDERcreate_provider_for_mailbox(mailbox)— пытается определить провайдер по даннымMailbox
Наследуйте MailProvider из backend/mail/base.py и реализуйте два метода:
from backend.mail.base import MailProvider, Mailbox, Inbox
class MyProvider(MailProvider):
name = "my_provider"
def generate(self) -> Mailbox:
...
def inbox(self, mailbox: Mailbox) -> Inbox:
...Ожидания:
generate()создаёт новый ящик и возвращаетMailbox(email, password)inbox()возвращаетInboxс письмами для этого ящика
- Создайте новый модуль в
backend/mail/. - Реализуйте класс-провайдер на базе
MailProvider. - Зарегистрируйте его в
backend/mail/__init__.py. - Укажите его имя в
MAIL_PROVIDERилиSLOT_MAIL_PROVIDER.
- нужен другой temp-mail API
- нужен корпоративный IMAP
- нужно разделить провайдеры для админов и слотов
- нужно контролировать домены / TTL / rate limits