- Using pip:
$ pip install django-db-mailer
- Add the
dbmail
application toINSTALLED_APPS
in your settings file (usuallysettings.py
) - Sync database (
./manage.py syncdb
or./manage.py migrate
)
from dbmail.models import MailTemplate
from dbmail import send_db_mail
# New dbmail template
MailTemplate.objects.create(
name="Site welcome template",
subject="Welcome",
message="Welcome to our site. We are glad to see you.",
slug="welcome",
is_html=False,
)
# Send message with created template
send_db_mail(
# slug was defined on db template
slug='welcome',
# recipient can be list, or str separated with comma or simple string
# 'user1@example.com' or 'user1@example.com, user2@example.com' or
# ['user1@example.com', 'user2@example.com'] or string Mail group slug
recipient='user1@example.com',
# All *args params will be accessible on template context
{
'username': request.user.username,
'full_name': request.user.get_full_name(),
'signup_date': request.user.date_joined
},
# You can access to all model fields. For m2m and fk fields, you should use module_name
MyModel.objects.get(pk=1),
# Optional kwargs:
# from_email='from@example.com'
# cc=['cc@example.com'],
# bcc=['bcc@example.com'],
# user=User.objects.get(pk=1),
#
# language='ru',
#
# attachments=[(filename, content, mimetype)],
# files=['hello.jpg', 'world.png'],
# headers={'Custom-Header':'Some value'},
#
# queue='default',
# retry_delay=300,
# max_retries=3,
# retry=True,
# time_limit=30,
# send_after=60,
#
# use_celery=True,
)
$ sudo apt-get install virtualenvwrapper
$ mkvirtualenv django-db-mailer
$ git clone https://github.com/LPgenerator/django-db-mailer.git
$ cd django-db-mailer
$ python setup.py develop
$ cd demo
$ pip install -r requirements.txt
$ python manage.py syncdb
$ python manage.py migrate
$ python manage.py runserver
Revision
For support template revisions, you can install django-reversion
.
Find information about compatibility with your Django versions here.
Editor
To enable editor, you may install and configure django-tinymce
app.
Theme
django-db-mailer
supported from box django-grappelli
skin. Information about compatibility available here.
Queue
Install and configure django-celery
for background message sending with priorities. You can find celery settings examples on demo project.
We recommended to use django-celery-mon
with django-celery
for monitoring celery and supervisor processes.
Translation
For use different language on your mail templates, install django-modeltranslation
or grappelli-modeltranslation
.
Add into settings.py:
MODELTRANSLATION_DEFAULT_LANGUAGE = 'en'
MODELTRANSLATION_LANGUAGES = ('ru', 'en')
MODELTRANSLATION_TRANSLATION_FILES = (
'dbmail.translation',
)
INSTALLED_APPS = ('modeltranslation',) + INSTALLED_APPS
# INSTALLED_APPS = ('grappelli', 'grappelli_modeltranslation', 'modeltranslation',) + INSTALLED_APPS
Update dbmail fields:
$ ./manage.py sync_translation_fields --noinput
Postmark backend
Install python-postmark
app via pip. Configure your settings:
POSTMARK_API_KEY = ''
POSTMARK_SENDER = 'noreply@example.com'
POSTMARK_TEST_MODE = False
EMAIL_BACKEND = 'postmark.django_backend.EmailBackend'
Older versions
Very simple version of this app, available here. That version do not include celery settings, bcc, api, mail settings, signals, mail groups and model browser.
Note
All app features available only with django-celery
and with Redis
.
$ pip install httpie
$ http -f POST http://127.0.0.1:8000/dbmail/api/ api_key=ZzriUzE slug=welcome recipient=root@local.host data='{"name": "Ivan", "age": 20}'
or
$ curl -X POST http://127.0.0.1:8000/dbmail/api/ --data 'api_key=ZzriUzE&slug=welcome&recipient=root@local.host'
- Python: 2.6, 2.7
- Django: 1.4, 1.5, 1.6