django-post_office

An app that allows you to keep track of email activities and send mail asynchronously in Django
Download

django-post_office Ranking & Summary

Advertisement

  • Rating:
  • License:
  • MIT/X Consortium Lic...
  • Price:
  • FREE
  • Publisher Name:
  • Selwin Ong
  • Publisher web site:
  • https://github.com/ui/

django-post_office Tags


django-post_office Description

django-post_office is a simple mail queuing and logging app that allows you to keep track of email activities and send mails asynchronously in Django. Supports sending HTML email.The concept is similar to django-mailer and django-mailer-2. I maintained my own fork of django-mailer-2 here until I decided to make one from scratch because I wanted a cleaner code base.post_office is implemented as a Django EmailBackend so you don't need to change any of your code to start sending email asynchronously.Installation- Install via pypi: pip install django-post_office- Add post_office to your INSTALLED_APPS in django's settings.py: INSTALLED_APPS = ( # other apps "post_office", )- Run syncdb: python manage.py syncdb- Set post_office.EmailBackend as your EMAIL_BACKEND in django's settings.py: EMAIL_BACKEND = 'post_office.EmailBackend'UsageIf you use post_office's EmailBackend, it will automatically queue emails sent using django's send_mail in the database.To actually send them out, run python manage.py send_queued_mail. You can schedule this to run regularly via cron:* * * * * (/usr/bin/python manage.py send_queued_mail >> send_mail.log 2>&1)By default, post_office uses django's SMTP EmailBackend. If you want to use a different backend, you can do so by changing POST_OFFICE_BACKEND.For example if you want to use django-ses:POST_OFFICE_BACKEND = 'django_ses.SESBackend'You can view also queued emails along with their statuses if you have django's admin interface enabled:INSTALLED_APPS = ( # ... 'django.contrib.admin', # ...)Management Commands -send_queued_mail - send queued emails, those that aren't successfully sent they will be marked as failed.- cleanup_mail - delete all emails created before an X number of days (defaults to 90).You may want to set these up via cron to run regularly:* * * * * (cd $PROJECT; python manage.py send_queued_mail >> $PROJECT/cron_mail.log 2>&1)0 1 * * * (cd $PROJECT; python manage.py cleanup_mail --days=30 >> $PROJECT/cron_mail_cleanup.log 2>&1)Lower Level Usagepost_office also comes with a send_mail command similar to django's. It accepts two extra arguments, html_message and priority (high, medium, low or now).Here's how to use it:from post_office import send_mail, PRIORITYsend_mail('subject', 'plaintext message', 'from@example.com', , '< p >HTML message< /p >', priority=PRIORITY.medium)post_office is also task queue friendly. Passing now as priority into send_mail will deliver the email right away, regardless of how many emails you have in your queue:from post_office import send_mail, PRIORITYsend_mail('subject', 'plaintext message', 'from@example.com', , '< p >HTML message< /p >', priority=PRIORITY.now)This is useful if you already use something like django-rq to send emails asynchronously and only need to store email activities and logs.Product's homepage


django-post_office Related Software