Skip to main content

Django app for managing multiple mass-mailing lists with both plaintext as well as HTML templates (and pluggable WYSIWYG editors for messages), images and a smart queueing system all right from the admin interface.

Project description

https://img.shields.io/pypi/v/django-newsletter.svg Supported Python versions Supported Django versions GitHub Actions https://codecov.io/gh/jazzband/django-newsletter/branch/master/graph/badge.svg Jazzband

Newsletter application for the Django web framework.

What is it?

Django app for managing multiple mass-mailing lists with both plaintext as well as HTML templates with rich text widget integration, images and a smart queueing system all right from the admin interface.

Status

We are currently using this package in several large to medium scale production environments, but it should be considered a permanent work in progress.

Documentation

Extended documentation is available on Read the Docs.

Translations

Strings have been fully translated to a lot of languages with many more on their way.

https://www.transifex.com/projects/p/django-newsletter/resource/django/chart/image_png

Contributions to translations are welcome through Transifex. Strings will be included as soon as near-full coverage is reached.

Compatibility

Currently, django-newsletter officially supports Django 4.2.x LTS, and 5.2.x LTS and Python 3.9 through 3.13.

Requirements

Please refer to pyproject.toml for an updated list of required packages.

Also, you will need to install one of these to use for thumbnails:

  • sorl-thumbnail

  • easy-thumbnails

Additional dependencies that need to be installed separately:

  • python-ldap: for importing ldif files

  • unicodecsv: for importing csv files

  • python-card-me: for importing vCard files

Tests

Fairly extensive tests are available for internal frameworks, web (un)subscription and mail sending. Sending a newsletter to large groups of recipients (+15k) has been confirmed to work in multiple production environments. Tests for pull req’s and the master branch are automatically run through GitHub Actions.

Contributing

Want to contribute, great!

Please refer to the issues on GitHub and read CONTRIBUTING.rst .

Feedback

If you find any bugs or have feature request for django-newsletter, don’t hesitate to open up an issue on GitHub (but please make sure your issue hasn’t been noticed before, finding duplicates is a waste of time). When modifying or adding features to django-newsletter in a fork, be sure to let me know what you’re building and how you’re building it. That way we can coordinate whether, when and how it will end up in the main fork and (eventually) an official release.

In general: thanks for the support, feedback, patches and code that’s been flowing in over the years! Django has a truly great community. <3

License

This application is released under the GNU Affero General Public License version 3.

Changes

1.2.1 (2025-12-03)

  • Fix NotImplementedError in S3/remote storage attachment (#413)

1.2 (2025-10-03)

  • Dynamic subscription generation

  • Add multi-site capability (#266)

  • Add option to enable/disable unsubscribe in Newsletter

  • Add option for displaying images below the article text

  • Add NEWSLETTTER_USE_HTTPS setting to produce https urls (defaults to True)

  • Fix problems with recipient’s name by using python’s formataddr

  • Fix missing site domain in thumbnail templates

1.1 (2025-09-07)

  • Drop support for Python <3.9

  • Add support for Python 3.13

  • Add support for Django 5.2

  • Add setting to configure thumbnail size

  • Fix thumbnail template not found error

  • Fix bug in Subscription admin actions

  • Replace deprecated ldif3 library with python-ldap

  • Remove optional libraries from requirements (python-ldap, unicodecsv, python-card-me)

1.0 (2024-12-11)

  • Drop support for Django <4.2

  • Drop support for Python <3.8

  • Add support for Django 4.2, 5.0, 5.1

  • Add support for Python 3.10, 3.11, 3.12

  • Fix Compatibility issues with Django 5.1

  • Configurable thumbnailing, dropping hard sorl-thumbnail (#304).

  • File attachments for messages (#334).

  • Drop surlex dependency improved path() and re_path() (#339).

0.9.1 (2020-05-18)

  • Drop support for Django 1.11 LTS and Python 3.4 and 2.7.

  • Updated translations.

0.9 (2019-02-19)

  • Upgrade to sorl-thumbnail 12.6.2, remove install workaround.

  • Update several dependencies (waitress, Django) due to security issues.

0.9b1 (2019-01-11)

  • Support for Django Django 1.11.x (#294), 2.2.x (#295) and 3.0.x (#296).

  • Added missing migration (#282).

  • Update several dependencies due to security issues.

  • Python 3.8 support.

0.8b1 (2018-11-17)

  • Django 2.1 support (#257).

  • Python 3.7 support (#256).

0.7 (2018-07-13)

  • Fixed security issue allowing subscription without confirmation (#108).

  • Updated locales (ar, de).

  • Proper default Newsletter for Message, fixes #224.

  • Instructions for embedding a sign-up form (#250).

  • Migration issue with Django 2.0 (#254).

  • Miscellaneous documentation improvements.

0.7b2 (2018-03-25)

  • Drop support for deprecated Django 1.10.

  • Introduce submit_newsletter management command, deprecating cron job and dropping django-extensions dependency.

  • Fix for encoding of non-ASCII recipient names for Django < 1.9 (#244).

  • Allow programmatic access Article and Submission save() methods (#246).

0.7b1 (2017-11-16)

  • Support for Django 1.10, 1.11 and tentative support for 2.0.

  • Drop support for Django 1.9.

  • Added support for Python 3.6.

  • Isolated the send_message process in anticipation of dropping of django-extensions dependency (#39).

  • Custom ArticleFormSet for improved Article sortorder, hidden by default. (#194)

  • Move tests to separate directory, exclude from binaries and use Django’s native test runner. (#206)

  • Cleanup of form validation. (#209)

  • Settings for delays between emails, batches and the size of batches. (#223)

  • Add missing translatable strings in templates. (#220)

  • Added translations for es, el_GR.

  • Updated translations for fa, fr, nl.

Security fixes

  • Don’t leak username in unsubscribe form.

  • Use Django’s crypto code to generate random code.

Small fixes

  • Add MySQL contrib to export list of subscribers.

  • Add note about EMAIL_* settings in installation docs.

  • Added test for Message.__str__.

  • Warnings when files cannot be read in setup.py.

  • Move test requirements to their approriate place. Closes (#190)

  • Note on upgrading from <0.5.

  • Added documentation on premailers. Closes (#178)

  • Display email on import confirmation page.

  • Fix broken links in requirements. (#205)

  • Move Pillow to requirements, fixes (#202).

  • Add a second subscription for mailing tests.

  • Require Django 1.8.18 (latest point release).

  • HTML5 doctype for default templates.

0.6 (2016-02-02)

  • Added support for Django 1.8 and 1.9, and dropped support for older versions.

  • Added support for native Django migrations, replacing South migrations.

  • Added Python 3.4/3.5 support and dropped Python 2.6 support.

  • Replaced IPAddressField by GenericIPAddressField (#131).

  • Fixed addresses serialization with JSON-based sessions (#104).

  • Add List-Unsubscribe header to sent messages (#169).

  • Added Polish and Brazilian Portuguese translations.

  • Significantly improved test coverage.

Small fixes

  • Submission admin always takes last message (#170).

  • Check that user has “add_subscription” permission when importing subscriptions (#128).

  • Fix for Submission.publish_date default value (#125).

  • Change subscription status in admin to radio field (#122).

  • Make the Submissions list display the Publish date and time with respect to the server’s timezone (#112).

  • Several smaller issues: #107, #121, #123

0.5.2 (2014-05-01)

  • Additional locale support: Arabic, Czech, French and Islandic

  • Run tests on Django 1.7 beta and Python 3.3 (but allow failure)

0.5.1 (2013-11-21)

  • Added Italian translation, thanks to azanibellato.

  • Support for pluggable/custom user models (#101).

  • Proper Sphinx documentation with autodoc on Read the Docs (#90).

  • Compatibility with Django 1.6 thanks to @jnss (#97).

  • Include default message templates in package (#95).

  • Fix database to template file migration for non-ASCII characters (#94).

  • Fix small issues with vCard imports (mainly mimetype-related).

0.5 (2013-10-03)

  • Added proxy for app-specific settings.

  • Optional skipping of email confirmation in views (CONFIRM_EMAIL_<ACTION>).

  • Russian translation (contributed by ak3n).

  • Added explicit HTML toogle to Newsletter model.

  • Fix JavaScript submit link on “Add submission”, ported to use jQuery.

  • Replacement of remaining function based views with class based equivalents.

  • Move message templates from database to files.

0.4.1 (2013-04-15)

  • Started keeping a decent history file. (Finally…)

  • Support Django 1.5; make use of class based generic views

  • Drop Django 1.3 and Python 2.5 support.

  • 100% test coverage for views

  • Farsi translations (contributed by rohamn)

  • French translations (contributed by smalter)

  • Admin actions for subscribing/unsubscribing (contributed by jnns)

  • Introduced django-webtest for some tests

  • Exempt previews from XFrame protection (fixes #54)

0.4 (2012-11-20)

  • Major code cleanup; PEP8, imports, restructuring, removal of legacy code

  • Improved testing throgh Travis and better test coverage

  • South migrations

  • Added German translation (contributed by jnns)

  • WYSIWYG editor is now optional and pluggable, Imperavi and TinyMCE supported

  • Timezone-aware date-times when Django 1.4 is used

  • Ue of Django 1.3’s messages framework

  • Many small bugfixes (see GitHub issues)

  • Drop support for Django 1.2

  • Automatic detection of charset, encoding and dialect for CSV import

  • Much cleaner log messages with proper message substitution

  • Use Django’s staticfiles contrib for static assets in admin interface

  • Use surlex for more readable URL templates

  • Use sorl-thumbnail for article images and default templates

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_newsletter-1.2.1.tar.gz (429.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_newsletter-1.2.1-py3-none-any.whl (505.0 kB view details)

Uploaded Python 3

File details

Details for the file django_newsletter-1.2.1.tar.gz.

File metadata

  • Download URL: django_newsletter-1.2.1.tar.gz
  • Upload date:
  • Size: 429.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.4

File hashes

Hashes for django_newsletter-1.2.1.tar.gz
Algorithm Hash digest
SHA256 4a9294e5e29a27413b871955aa1ec91683072c09107afbf9093be09e8bdee32d
MD5 bbaca912d19dee1c308fc0c0a46db235
BLAKE2b-256 1c744362e9485318a12a93828dc4c78b0d67a3daa0bc00a5d62c46b8e6a55e91

See more details on using hashes here.

File details

Details for the file django_newsletter-1.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for django_newsletter-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 01c58cb0aa35458dd994071198c3219f3172de34584ff5d1e9b345cdad92726f
MD5 41349fb09e1d43ca223bbe1800f44849
BLAKE2b-256 f5738b0ffb0a490398e9e9abb0ab8b6a058625786cac8139511f1e860693bc4f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page