Я знаю, что вы можете использовать настройку EMAIL_BACKEND
, и я думаю, что написал рабочий бэкэнд дурака, но я не могу установить свой EMAIL_BACKEND
для своего класса, потому что, очевидно, это должен быть путь импорта строк, не название класса. Локальный путь (emails
) не работает, поскольку текущий каталог явно не находится в пути импорта Python. И я не могу использовать локальный импорт пакетов (from . import
), потому что, конечно, это должна быть простая строка.
Я заработал, скопировав мой модуль в /usr/local/lib/python3.7/
, но это так ужасное долгосрочное решение, которое даже не стоит.
Структура моего каталога проекта выглядит так: django/project/app/
, с emails.py
в app/
, рядом с settings.py
и другими. Структура проекта / приложения не имела для меня большого смысла (у меня есть только одно приложение), но у меня сложилось впечатление, что это был намеченный способ настройки Django, поэтому я и сделал это.
Это не должно относиться к делу, но, кстати, мой бэкэнд-код Mutt:
import subprocess
from django.core.mail.backends.base import BaseEmailBackend
class MuttBackend(BaseEmailBackend):
def send_messages(self, email_messages):
for m in email_messages: self.send(m)
def send(self, message):
print(message.subject, message.from_email, message.to, message.body)
mutt = subprocess.Popen(args = ['/usr/local/bin/mutt', *message.to,
'-s', message.subject,
'-e', f'set from="{message.from_email}"'],
stdin = subprocess.PIPE)
mutt.stdin.write(bytes(message.body, 'utf-8'))
mutt.stdin.close()
Как я могу установить EMAIL_BACKEND
для класса без использования пути импорта или найти другой обходной путь ? Я немного погуглил, но не смог найти никого, кто бы мог заставить что-то подобное работать.