2016-05-13 2 views
1

Что мне нужно - это настроить электронную почту как EMAIL_HOST_USER, EMAIL_HOST, EMAIL_PORT и т. Д. Из моей базы данных, а затем передайте эти значения в конфигурацию электронной почты в файле settings.py. Это возможно? и если есть, как я могу это сделать?Как получить конфигурацию электронной почты из БД?

+1

Вы не можете этого сделать, поскольку settings.py - это первое, что django загружает, чтобы установить ваш запуск env. На данный момент Django не может получить доступ к базе данных. – RA123

+0

В какой-то момент я попытался создать пользовательский 'EmailBacked', чтобы принимать значения из базы данных, но это не сработало, но я не знаю, не ошибаюсь ли я в своем собственном« EmailBackend »или если в пользовательском бэкэнд, который может Не делай, знаете ли вы способ сделать то, что я пытаюсь сделать? –

+1

Существует большой путь для достижения этого, но не через django. Вы не можете использовать какую-либо часть django или ее функциональность, так как файл settings.py еще не загружен. Если вам удобно работать немного за пределами django, я приступлю к работе над его методологией (будут связаны с настройками переменных среды, пользовательским сырым SQL-запросом с использованием python, независимо от вашего db, это прямая работа с python) – RA123

ответ

1

Actualy это не так трудно сделать, если вы используете django.core.mail.backends.smtp.EmailBackend так:

from django.core.mail.backends.smtp import EmailBackend 

backend = EmailBackend(host = server.host, server.port, server.username, serer.password) 

После создания бэкенд как это. У вас есть два варианта отправки сообщения. Во-первых, вы можете вызвать метод send_messages(), чтобы он отправил ваши сообщения (или сообщение). Во-вторых, вы можете указать EmailMessage, чтобы использовать его в качестве соединения. И где сервер. Что бы ни случилось? Конечно, база данных.

class EmailServer(models.Model): 
    host = models.CharFields() 
    .... 
+0

oh man! что на самом деле легко, спасибо –

+0

Рад помочь – e4c5

Смежные вопросы