- Added a new
LOCK_FILE_NAME
which lets you change post office's lock file name. Thanks @mogost! - Fixes a bug where
email_queued
signal is not sent in certain cases. Thanks @diesieben07! - Fixes an issue where attachment admin page would not render with large number of emails. Thanks @petrprikryl!
- Fixes a crash when email instances are made with context, but without a template. Thanks @pacahon!
- Other miscellaneous fixes and house keeping tasks by @mogost!
- Added
BATCH_DELIVERY_TIMEOUT
that specifies the maximum time allowed for each batch to be delivered. Defaults to 180 seconds. Thanks @selwin!
- Optimized a queryset in
get_queued()
that doesn't use indexes in Postgres. Thanks @marsha97! - Removed
date_hierarchy
option which causes admin to load slowly on DBs with a large number of emails. Thanks @selwin! - Optimized
cleanup_expired_mails()
so that deletes emails in smaller batches. Thanks @marsha97!
- Changed JSON columns to use Django's
JSONField
and dropjsonfield
dependency. Thanks @jrief! - Fixed saving HTML emails that have
quoted_printable
. Thanks @gabn88! - Fixes an issue where emails are rendered without context in Django's admin interface. Thanks @zagl!
- This version no longer supports Django 3.1.
- Fixed an issue where emails may not be rendered with context. Thanks @zagl!
- Fixed a few packaging issues. Thanks @zagl and @adamchainz!
send_messages()
now mimics Django's SMTP Backend return value. Thanks @JiriKr!
- Improvement to attachment handling in admin interface. Thanks @petrprikryl!
- Fixed a bug where HTML body is not displayed in admin interface. Thanks @robbieadi!
- Explicitly specify
default_auto_field
to supress migration warnings. Thanks @CirXe0N! - Fixed a bug where
email.template
is not saved in certain cases. Thanks @franciscobmacedo!
- Support for bleach >= 5.0. Thanks @franciscobmacedo!
- Ensure that
Reply-To
headers are correctly set. Thanks @christophmeissner! - Add a
Resend
button in admin to easily resend an email. Thanks @domdinicola!
- Support for Django 4.0. Thanks @domdinicola!
cleanup_mail
now deletes emails in batches, which is much nicer to DB when deleting millions of emails. Thanks @stevemc4!- Failure to send an email are now logged as an exception. Thanks @SaturnFromTitan!
- Added
es
locale. Thanks @ahmontero! - Fixed admin template discovery issue for case-sensitive filesystems. Thanks @fasih!
- Fixes:
SMTPServerDisconnected
error. Thanks @weimens! - Various maintenance work by @jrief and @mogost.
- Fixed an issue with Celery integration that could cause duplicate emails. Thanks @jrief!
- Fixed an issue where Post Office's admin interface doesn't show. Thanks @christianciu!
- Added missing migration file (some model fields now offer a help text).
- Added the capability to configure retries via
MAX_RETRIES
andRETRY_INTERVAL
configuration settings. Thanks @Houtmann and @jrief! - The admin interface has been improved to show previews of emails. If you want HTML emails to be rendered,
please install
bleach
. Thanks @jrief! - Add
Message-ID
to the Email model. This allows administrators to trace back emails. Thanks @jrief! - Added
CELERY_ENABLED
settings. Thanks @elineda! - Fixes an issue that prevents PDS attachments from being sent. Thanks @patroqueeet!
- Allow
tasks.py
to be imported when Celery is not installed. This allows auto-discovery by other task systems such as Huey to succeed. - Fix duplicate key problem in template editor in Django admin.
- Signals that emails have been put into the queue.
- Celery integration for immediate asynchronous delivery.
- Changed version handling.
- Drop support for Django < 2.2.
- Revert
jsonfield2
back tojsonfield
to make upgrade from < 3.3.0 smoother. Thanks @rpkilby!
- Support for Django 3.0. Thanks @Mogost!
- Drop support for Django < 1.11 and Python < 3.5. Thanks @Mogost!
- Replace unsupported dependency
jsonfield
with supported forkjsonfield2
. Thanks @Mogost! - Added
OVERRIDE_RECIPIENTS
for testing purposes. Thanks @Houtmann! - Improved admin interface. Thanks @ilikerobots and @cwuebbels!
- Fix #264: Replace unicode elipsis against 3 dots.
- Drop support for Python-3.3.
- Drop support for Django-1.8 and 1.9.
- Add functionality to attach images as inlines to email body.
- Add special template engine to render HTML emails with inlined images.
- Update German translation strings.
- Improvements to attachments are handled. Thanks @SeiryuZ!
- Added
--delete-attachments
flag tocleanup_mail
management command. Thanks @Seiryuz! - I18n improvements. Thanks @vsevolod-skripnik and @delneg!
- Django admin improvements. Thanks @kakulukia!
- Added compatibility with Django 2.0. Thanks @PreActionTech and @PetrDlouhy!
- Added natural key support to
EmailTemplate
model. Thanks @maximlomakin!
- Fixed memory leak when multiprocessing is used.
- Fixed a possible error when adding a new email from Django admin. Thanks @ivlevdenis!
_send_bulk
now properly catches exceptions when preparing email messages.
- Fixed an infinite loop bug in
send_queued_mail
management command.
_send_bulk
now allows each process to use multiple threads to send emails.- Added support for mimetypes in email attachments. Thanks @clickonchris!
- An
EmailTemplate
can now be used as defaults multiple times in one language. Thanks @sac7e! send_queued_mail
management command will now check whether there are more queued emails to be sent before exiting.- Drop support for Django < 1.8. Thanks @fendyh!
- Django 1.10 compatibility fixes. Thanks @hockeybuggy!
- Fixed an issue where Django would sometimes create migration files for post-office. Thanks @fizista!
- Fixed an issue with sending email to recipients with display name. Thanks @yprez!
- Fixes Django 1.10 deprecation warnings and other minor improvements. Thanks @yprez!
- Email.subject can now accept up to 989 characters. This should also fix minor migration issues. Thanks @yprez!
- Fixes more Django 1.8 deprecation warnings.
Email.dispatch()
now closes backend connection by default. Thanks @zwack- Compatibility fixes for Django 1.9. Thanks @yprez!
Email.dispatch()
now closes backend connection by default. Thanks @zwack- Compatibility fixes for Django 1.9. Thanks @yprez!
- Fixes migration related packaging issues.
- Fixes deprecation warning in Django 1.8.
- Added multi backend support. Now you can use multiple email backends with
post-office
! - Added multi language support. Thanks @jrief!
- Adds Django 1.8 compatibility.
- Fixes a migration error. Thanks @garry-cairns!
- Support for Django 1.7 migrations. If you're still on Django < 1.7,
South migration files are stored in
south_migrations
directory.
- IMPORTANT: in older versions, passing multiple
recipients
intomail.send()
will create multiple emails, each addressed to one recipient. Starting from1.0.0
, only one email with multiple recipients will be created. - Added
LOG_LEVEL
setting. mail.send()
now supportscc
andbcc
. Thanks Ștefan Daniel Mihăilă (@stefan-mihaila)!- Improvements to
admin
interface; you can now easily requeue multiple emails. Log
model now stores the type of exception caught during sending.send_templated_mail
command is now deprecated.- Added
EMAIL_BACKEND
setting to the new dictionary-styled settings.
send_queued_mail
now accepts an extra--log-level
argument.mail.send()
now accepts an extralog_level
argument.- Drop unused/low cardinality indexes to free up RAM on large tables.
send_queued_mail
now accepts--lockfile
argument.- Lockfile implementation has been modified to use symlink, which is an atomic operation across platforms.
- Added
CONTEXT_FIELD_CLASS
setting to allow other kinds of context field serializers.
- Fixed a bug that causes context to be saved when
render_on_delivery
is False
- Added a new setting
DEFAULT_PRIORITY
to set the default priority for emails. Thanks Maik Hoepfel (@maikhoepfel)! mail.send()
gains arender_on_delivery
argument that may potentially result in significant storage space savings.- Uses a new locking mechanism that can detect zombie PID files.
- Made a few tweaks that makes
post_office
much more efficient on systems with large number of rows (millions).
- Python 3 compatibility fix.
- Added support for sending attachments. Thanks @yprez!
- Added
description
field toEmailTemplate
model to store human readable description of templates. Thanks Michael P. Jung (@bikeshedder)! - Changed
django-jsonfield
dependency tojsonfield
for Python 3 support reasons. - Minor bug fixes.
- Support for Python 3!
- Added mail.send_many() that's much more performant when sending a large number emails
- Added logging
- Added BATCH_SIZE configuration option
- Fixes various multiprocessing bugs
- Email sending can now be parallelized using multiple processes (multiprocessing)
- Email templates are now validated before save
- Fixed a bug where custom headers aren't properly sent
- Added support for sending emails with custom headers (you'll need to run South when upgrading from earlier versions)
- Added support for scheduled email sending
- Backend now properly persist emails with HTML alternatives
- IMPORTANT:
mail.send
now expects recipient email addresses as the first argument. This change is to allow optionalsender
parameter which defaults tosettings.DEFAULT_FROM_EMAIL
- Fixed a bug where all emails sent from
mail.send
have medium priority
- IMPORTANT: added South migration. If you use South and had post-office installed before 0.3.0, you may need to manually resolve migration conflicts
- Allow unicode messages to be displayed in
/admin
- Introduced a new
mail.send
function that provides a nicer API to send emails created
fields now useauto_now_add
last_updated
fields now useauto_now
- Fixed typo in
admin.py
- Allows sending emails via database backed templates
- Errors when opening connection in
Email.dispatch
method are now logged