Skip to content

collective/Products.EasyNewsletter

Repository files navigation

Products.EasyNewsletter

CI codecov PyPI PyPI Status Python Versions License

EasyNewsletter is a simple but powerful newsletter/mailing add-on for Plone.

Features

  • Plain text and HTML newsletters (including images)
  • Manual written newsletters/mailings
  • Automatic Plonish newsletters/mailings: Utilize Plone's Collections to collect content
  • Send out daily/weekly/monthly issues automatically, based on collections (by cron or clock-server)
  • Flexible templates for Collections, to generate newsletter content
  • TTW customizable output template to generate HTML newsletters
  • Personalized emails
  • Subscribing/unsubscribing
  • Import/export subscribers via CSV
  • Use Plone Members/Groups as receivers (works also with Membrane)
  • External subscriber filtering/manipulation with plugins (filter out or add more subscribers)

Requirements

  • Python 3.10+
  • Plone 6.1.1

Installation

Install dependencies using uv:

uv sync --extra dev

Running

Start the Plone instance:

invoke start

Or run directly:

runwsgi instance/etc/zope.ini

The initial admin user is configured in instance/inituser (default: admin/admin).

Development

Running Tests

uv run pytest

Tasks

Use invoke for common tasks:

uv run invoke --list

Releasing

The project uses zest.releaser for releases. The build backend is hatchling — no setup.py is needed.

To do a full release:

uv run fullrelease

This will:

  1. Update the version in pyproject.toml
  2. Update CHANGELOG.md
  3. Tag the release in git
  4. Build an sdist and wheel
  5. Upload to PyPI via twine

Release configuration is in pyproject.toml under [tool.zest-releaser].

Documentation

For more documentation please visit: http://productseasynewsletter.readthedocs.io

Known Issues

  • If parts of the ENLIssue footer show up in the Plone footer, change the footer portlet view name from footer to @@footer. This issue was fixed in Plone already, but you have to manually update this in an existing site.

Translations

translation status

Please help us to improve translations with Weblate: https://hosted.weblate.org/engage/products-easynewsletter/

Source Code

https://github.com/collective/Products.EasyNewsletter

Bug Tracker

https://github.com/collective/Products.EasyNewsletter/issues

ToDo

Funding welcome ;)

  • Async task queue for Plone > 5.2, as an alternative to collective.taskqueue which will not support WSGI
  • Integration of Mosaico newsletter editor
  • External subscriber sources / delivery services
  • convert robot tests with playwright based E2E tests

Maintainer

Contributors

  • Kai Dieffenbach: initial release
  • Andreas Jung
  • Dinu Gherman
  • Jens W. Klein
  • Peter Holzer
  • Philip Bauer
  • Thomas Massman [tmassmann]
  • Timo Stollenwerk

License

GPL-2.0-or-later