I don\'t want to use email configuration fields in setting.py, i want to put them in to a model.
class Configuration(models.Model):
email_use_tls = model
I've used this method for a few years and love it. I've just published a package (django-des) to accomplish this using the methods in the other answers here.
This package installs a model (DynamicEmailConfiguration
) and uses django-solo
to give you a nice editing experience in the Django admin. It then provides an email backend you can use that will pull settings from that model in a similar way to what Andrey Nelubin recommended. It also gives you a nice little test email button at the top right of the Django Admin Panel.
To install it:
Install Django Dynamic Email Settings:
$ pip install django-des
Add it to your `INSTALLED_APPS`:
INSTALLED_APPS = (
...
'django_des',
...
)
Add the dynamic email configuration email backend to settings.py
EMAIL_BACKEND = 'django_des.backends.ConfiguredEmailBackend'
To enable test email support, add Django DES's URL patterns:
from django_des import urls as django_des_urls
urlpatterns = [
...
url(r'^django-des/', include(django_des_urls)),
]
Now you can visit 127.0.0.1:8000/admin/django_des/dynamicemailconfiguration/ and configure your email settings. You can send a test email from there too.
Once this is all done, you can use send_mail
normally.