Products.EasyNewsletter


NameProducts.EasyNewsletter JSON
Version 5.0.11 PyPI version JSON
download
home_pagehttps://github.com/collective/Products.EasyNewsletter
SummaryPowerful newsletter/mailing addon for Plone
upload_time2022-07-08 16:33:53
maintainerMrTango
docs_urlhttps://pythonhosted.org/Products.EasyNewsletter/
authorMaik Derstappen (MrTango)
requires_python
licenseGPL
keywords plone newsletter mailing email mailinglist
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            EasyNewsletter
==============

.. image:: https://github.com/collective/Products.EasyNewsletter/workflows/Plone%20package/badge.svg
    :target: https://github.com/collective/Products.EasyNewsletter/actions

.. image:: https://codecov.io/gh/collective/Products.EasyNewsletter/branch/master/graph/badge.svg?token=xEu330kMw5
    :target: https://codecov.io/gh/collective/Products.EasyNewsletter   

.. image:: https://img.shields.io/pypi/v/Products.EasyNewsletter.svg
    :target: https://pypi.python.org/pypi/Products.EasyNewsletter/
    :alt: Latest Version

.. image:: https://img.shields.io/pypi/status/Products.EasyNewsletter.svg
    :target: https://pypi.python.org/pypi/Products.EasyNewsletter/
    :alt: Egg Status

.. image:: https://img.shields.io/pypi/pyversions/Products.EasyNewsletter.svg
    :target: https://pypi.python.org/pypi/Products.EasyNewsletter/
    :alt: Supported - Python Versions

.. image:: https://img.shields.io/pypi/l/Products.EasyNewsletter.svg
    :target: https://pypi.python.org/pypi/Products.EasyNewsletter/
    :alt: License

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

Compatibility
-------------

* EasyNewsletter versions >= 5.x are Plone 5.1 and above only, they are free of Archetypes and **support Python 3**.
* EasyNewsletter versions >= 4.x Plone 5.1 only, they are using DX but still have Archetypes dependencies for migration.
* For Plone versions < 5.1, use the 3.x branch and releases of EasyNewsletter!

For Python 2.7 you have to pin down html2text:

    html2text = <2019.8.11


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)

* synchronous/ asynchronous send out [currently not reimplemented, if you need this, you have to wait for future versions or fund the work on this feature]

* external

  * subscriber sources (configured through a Zope utility) [currently not reimplemented]
  * delivery services (other than Plone MailHost) [currently not reimplemented]


Requirements
============

* Plone 5.1 (tested)
* Dexterity (Archetypes for migration)


Installation
============

1. Add ``Products.EasyNewsletter`` to your buildout
2. Run your buildout script
3. Restart Plone
4. Install EasyNewsletter via Plone Management Interface
5. Add a Newsletter to the Plone site
6. Add a "Newsletter Subscriber" portlet and select a Newsletter
   (To this newsletter, the subscribers will be added).


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.


Source Code
===========

Source code is at GitHub: https://github.com/collective/Products.EasyNewsletter

Translations
============

.. image:: https://hosted.weblate.org/widgets/products-easynewsletter/-/products-easynewsletter/multi-auto.svg
    :target: https://hosted.weblate.org/engage/products-easynewsletter/
    :alt: translation status

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

Bug tracker
===========

Issue tracker is at GitHub: https://github.com/collective/Products.EasyNewsletter/issues

ToDo
====

funding welcome ;)

- async task queue for WGSI as an alternative to collective.taskqueue which will not support WGSI
- Integration of Mosaico newsletter editor
- External subscriber sources / delivery services
- content migration AT >> DX


Maintainer
==========

* Maik Derstappen [MrTango] md@derico.de


Contributors
============

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

Changelog
=========


5.0.11 (2022-07-08)
-------------------

- add missing upgrade step to upgrade easynewsletter portal_types action category names
  [MrTango]


5.0.10 (2022-05-09)
-------------------

- fix actions category name, we need to have a prefix here, otherwise permission check will not work correctly
  [MrTango]

- Fix default value when no salution was found in salutation_mappings
  [MrTango]


5.0.9 (2022-03-25)
------------------

- Optimize banner url, use cached version from plone.namedfile
  [MrTango]


5.0.8 (2022-02-28)
------------------

- use custom LocalLoader for emails.transformer, to load images instead of doing this via request
  [MrTango]


5.0.7 (2022-02-10)
------------------

- Add marker classes aggregatedContentSlot/aggregatedContent
  [MrTango]


5.0.6 (2021-06-16)
------------------

- Improve error handling on email building and sending.
  [MrTango]


5.0.5 (2021-04-23)
------------------

- Use min-height for iframe "enl-issue-preview" instead of fixed height in tag.
  [MrTango]


5.0.4 (2021-04-22)
------------------

- Improve iframe reziser handling for online view of newsletter issues. Works now better even if JS is broken. Also disable requireJS for the injected JS.
  [MrTango]

- fix preview_html method/separat preview window view
  [MrTango]


5.0.3 (2021-04-14)
------------------

- Fix image handling in aggregation templates
  [MrTango]


5.0.2 (2021-03-22)
------------------

- Fix wrong redirect urls for error redirects in subscribers-upload form
  [MrTango]


5.0.1 (2021-03-16)
------------------

- Add preview parameter to _render_output_html, which can be used to distinguish preview from email rendering
  [MrTango]


5.0.0 (2021-02-04)
------------------

- use email_validator.validate_email in plone_user vocab, fixes #159
  [MrTango]


5.0.0b3 (2021-02-03)
--------------------

- Fix dublicate text in action buttons on newsletter-subscribers view.
  [MrTango]


5.0.0b2 (2021-02-03)
--------------------

- Don't fail sending process when one email fails
  [thomasmassmann]

- Fix helper method: get_results_from_aggregation_sources, which can be used for a table of contents
  [MrTango]

- Update output_blacksee template with a TOC and some CSS cleanup
  [MrTango]

- Switch from travis to Github-Actions and fix tests
  [MrTango]

- Fixed empty epilog error #162
  [iham]

- Add Newsletter title to the unsubscribe email subject #131
  [MrTango]


5.0.0b1 (2020-03-08)
--------------------

- Add userid to member property dict for plone subscribers.
  [thomasmassmann]

- Add information about sent emails to Newsletter Issue.
  [thomasmassmann]


5.0.0a9 (2019-12-14)
--------------------

- Force immediate sending in MailHost
  [MrTango]

- Add portal messages with send_counter/send_error_counter
  [MrTango]

- Add divers for salutation and make salutation optional in subscriber portlet
  [MrTango]

- Refacture locales/update.py and fix german translations
  [MrTango]


5.0.0a8 (2019-12-12)
--------------------

- Fix unsubscribe url in subscriber portlet
  [MrTango]

- Allow subscribers to not fill-in the Name, when subscribing
  [MrTango]

- Add additional_info field to subscriber portlet, useful for things like terms and conditions
  [MrTango]

- Allow local Plone users and groups to be used as recipients
  [tmassman]


5.0.0a7 (2019-10-09)
--------------------

- Fix subscribers csv download/export (Py3/Py27)
  [MrTango]


5.0.0a6 (2019-10-08)
--------------------

- Improve placeholder docs and implementation, only use lower case placeholders from now on
  [MrTango]

- remove old entries in portal_types registration from uninstall profile
  [MrTango]


5.0.0a5 (2019-10-07)
--------------------

- Add placeholder for calendar_week
  [MrTango]


5.0.0a4 (2019-10-04)
--------------------

- Fix upgrade step 4004
  MrTango


5.0.0a3 (2019-10-04)
--------------------

- Fix MANIFEST after changing package structure
  [MrTango]


5.0.0a2 (2019-10-04)
--------------------

- Fix setup.py by providing z3c.autoinclude entrypoint
  [MrTango]

5.0.0a1 (2019-09-23)
--------------------

- Remove Archetypes from code base and remove Archetypes dependencies
  [MrTango]


4.0.0 (unreleased)
--------------------

- Implement content types in Dexterity instead of Archetypes
  [MrTango]

- Refactored sending and personalization, as well as issuedatafetcher adapter
  [MrTango]

- Implement Plone user/groups sources as behaviors
  [MrTango]

- Implement Collection behavior which supports aggregation templates on each collection
  [MrTango]

- Add modern views for most of the existing once, which plonecli, containing basic tests
  [MrTango]

- Add vocabularies for all Archetypes DisplayLists
  [MrTango]

- Fix unsubscribe_view and add some checks/tests for security
  [MrTango]


3.0.9 (unreleased)
------------------

- Nothing changed yet.


3.0.8 (2019-08-19)
------------------

- Make effectiveDate visible on ENLIssue and use it in Newsletter archive view instead of modified date for sorting
  [MrTango]


3.0.7 (2019-08-15)
------------------

- Allow send action only in draft state to prevent side effects for users.
  [agitator]

- Fix styles for subscriber portlet
  [MrTango]

- fix plone4 setup, by pinning plone.api to recent version
  [MrTango]

- Fix spelling in template
  [MrTango]

- Add plone.protect support to confirm-subscriber view and fix redirect to ENL object
  [MrTango]


3.0.6 (2018-02-18)
------------------

- DisableCSRFProtection for daily issue views, which are triggered by cron
  jobs
  [MrTango]


3.0.5 (2017-11-22)
------------------

- Use same cmf.ReviewPortalContent permission for taskqueue sendout as with standard sendout.
  [agitator]

- Show newsletter toolbar for reviewers.
  [agitator]

- Set effective date after sending an issue.
  [Gagaro]

- Fix subscriber portlet, it now reflects all settings also on addform
  [MrTango]


3.0.4 (2017-09-25)
------------------

- add plone.protect >= 3.1.1 and plone4.csrffixes>=1.1 as dependencies
  [MrTango]


3.0.3 (2017-09-12)
------------------

- Show all placeholders with dummy data in the separate preview window
  [MrTango]


3.0.2 (2017-07-29)
------------------

- Fix iFrameReziser in ENL Issue preview
  [MrTango]


3.0.1 (2017-07-21)
------------------

- Add test and documentation for customizing email personalization in addons.
  [MrTango]


3.0 (2017-07-16)
----------------

- Use globaly unique Content-Id for attached images. This fixes caching issues in some clients.
  [MrTango]

- Fix resolving default salutation
  [MrTango]


3.0b3 (2017-06-13)
------------------

- Just fix broken release on pypi


3.0b2 (2017-06-12)
------------------

- CSV import checks for duplicates based on email and updates existing subscribers.
  [agitator]

- Show newsletter issue preview in iframe
  [agitator]

- Refactured output and aggregation template rendering
  [MrTango]

- no write on read for issue public view anymore
  [MrTango]

- fixed permissions of issue in sent state
  [MrTango]

- refacture daily_issue view to work with new aggregation templates
  [MrTango]

- improved newsletter menu handling
  [agitator]

- Update documentation
  [MrTango]


3.0b1 (2017-05-15)
------------------

- Use new Collections for aggregating content
  [MrTango]

- Provide more and better email tempalte (output and aggregation)
  Templates are based and inspired on: https://github.com/mailchimp/email-blueprints
  [MrTango]

- Added newsletter toolbar and icons for Plone 5
  [agitator]

- A bunch of fixes in order to work better with Plone 5, plone.protect/CSRF protection and also some cleanup.
  [jensens]

- ``collective.taskqueue`` asynchronous send out support added.
  [jensens]

- Made sent issues visible to public
  [agitator]

- Give a redirect with a status message back to the issue page after sending a
  news letter issue directly (without asynchronous queueing), this was broken
  after the zamqp support was added.
  [fredvd]

- Do a transaction.commit() after changing the Issue workflow to 'sending' so
  we are certain another incoming request for sending the issue will see the
  change and fail in direct send mode. (Fixes #83)
  [fredvd]

- Only add IDisableCSRFProtection to the unsubscribe view if the supported
  newer plone.protect is available. Don't force dependency on plone.protect
  3.X
  [fredvd]

- zamqp: removed auto_delete property to keep sending queues on consumer restart
  [agitator]

- Added firstname, lastname and gender to enl_receivers dictionary
  [agitator]

- Added IBeforePersonalizationEvent for customisations
  [jensens]

- Use jinja syntax for template processing
  [jensens]

- Rafactoring of ENLIssue personalization
  [jensens]

- Language independent CSV Header
  [agitator]

- Unsubscribe page works now with plone.protect enabled
  [agitator]

- Changed unsubscribe target link to navigation root, to allow unsubscribe from a private newsletter without showing the login page.
  [agitator]

- Fixed renaming issue on copy_as_draft
  [agitator]

- Fixed usage of inline images from plone.app.contenttypes.
  [agitator]

- Clean up upgrade steps for adding catalog indexes. There's only one method in   setuphandlers now that adds indexes when they not already exist.
  [fredvd]

- Add extra textlines and corresponding translations id's in the drafts,
  masters and templates overview to clarify the difference in usage between
  them.
  [fredvd]

- Update Spanish translation
  [macagua]

- Added more improvements about i18n
  [macagua]

- Supported by v3.x is Plone 4.3.x+ and later.
  [jensens, agitator]

- Added optional queued sendout using ``collective.zamqp``. In order to not
  enqueue twice the workflow goes over a sending state now.
  [jensens]

- Update french translation by adding missing labels
  [mordicusetcubitus]

- Now use site_properties default charset for email subscription confirmation
  Before this was done using us-ascii preventing from displaying properly
  non ascii letters like éàù...
  [mordicusetcubitus]

- Fixed jquery initialization in enl_edithelper.js and make it work again.
  It didn't hide the user selection fields.
  [benniboy]

- Status and error messsages show up for anon users (was broke).
  [benniboy]

- Implemented that subscribers and recipients have a language. This is also
  queable via index and the affecting page templates have been adjusted.
  [benniboy]

- Made a checkbox in the send issue form to exclude all external subscribers.
  [benniboy]

- Split up the send method for better hookability.
  [benniboy]

- Reworked the whole issue workflow. See README.
  [benniboy]

- Added info on several newsletter fields, that changing settings does not
  affect already existing issues for that newsletter.
  [benniboy]

- Fixed enl_edithelper.py work again.
  [benniboy]

- Added 2 new constants to the config.py for hookability and adjusted the
  affected files to look up those constants.
  [benniboy]

- Fixed a subscriber can now unsubscribe himself, if he is not logged in.
  [benniboy]

- Reworked the salutation mapping (prepared for multilingual newsletter)
  [benniboy]

- Added utf-8 headers, sorted imports (plone-style), lines down to 80 chars.
  Unified qa in ``qa.cfg``, enforce more qa rules.
  [jensens]

- Extended subscriber for firstname, lastname and prefix,
  updated csv export and import. Added migration step.
  [agitator]

- Added subscriber to SearchableText index, but excluded from default results.
  [agitator]

- Updated portlet fields, fullname is now "generic" name. Updated portlet options
  to be queried for at subscription time.
  [agitator]

- Marked E-Mail, Salutation and Name as required if present in subscription portlet.
  [agitator]

- Change subscriber search into fulltext search via SearchableText
  [agitator]


2.6.14 (2014-07-10)
-------------------

- Update german translations
  [MrTango]


2.6.13 (2014-06-05)
-------------------

- Added tests for sending images
  [djay]
- Fixed issues with sending images in Plone 4.0-4.3
  [djay]
- Switch to ModifyPortalContent as main permission
  [djay]
- Added a unsubscribe form that allow unsubscribing direcly from the website
  [MrTango]
- Added some test for the unsubscribe views
  [MrTango]
- Reduce code complexity in ENLIssue and fix all pep8 violations
  [MrTango]
- Do the unicode check for handle_startendtag as well
  [jean]



2.6.12 (2013-11-01)
-------------------

- Correct non user fullname show/hide parameter usage: was always showed.
  [MordicusEtCubitus]

- Add French translation.
  [toutpt, MordicusEtCubitus]

- Add @@daily-issue view, in order to send issues with cron or clock-server.
  [tcurvelo]

- Change permission to send daily issue to ManagePortal.
  [tcurvelo]

- Improve responses and tests for daily issues.
  [tcurvelo]

- Adapted to Plone 4.3.
  [ksuess, rohberg]

- Fix exception handling in get_plone_members.
  [derstappenit]

- Fix description for Newsletter Template field in ENLIssue.
  [djowett]

- Add documentation for how to use filter to filter newsletter receivers.
  [MrTango]

- Optimize get_plone_member.
  [MrTango]

- Update Products/EasyNewsletter/content/EasyNewsletter.py 'results' not
  initialized properly in case of an error.
  [zopyx]

- Fix import of getSite for plone3.
  [MrTango]

- Update pt_BR translation.
  [tcurvelo]

- Fix check for already existing subscriber when registering. Hide
  enl_actions viewlet from public audience.
  [petschki]

- Allow registration without chosing a gender.
  [pbauer]

- i18n for default template.
  [davilima6]

- No more global definitions in templates.
  [davilima6]

- Corrections and Anglicization of Default newsletter templates.
  [djowett]


2.6.11 (2012-07-11)
-------------------

- Fix translations
  [derstappenit]

- Move Manage aggregation templates action into object_button aka actions menu
  [derstappenit]


2.6.10 (2012-07-10)
-------------------

- fix the email format, we don't use MIMEMultipart for the plain text part of the email, this fix problems with thunderbird
  [derstappenit]


2.6.9 (2012-07-06)
------------------

- we now use the modification date in Archive and Drafts view
  [derstappenit]

- ENLIssue now only editable if status is not Send
  [derstappenit]

- Newsletter UI cleanup, the archive, drafts and subscriber actions now in a smal viewlet, this reduce the buttons to make it clear
  [derstappenit]

- Issue UI cleanup, the actions for criteria and sub collections are move into object_buttons aka actions menu
  [derstappenit]


2.6.8 (2012-07-03)
------------------

- Improve the default template for content aggregation, we use tabled based layout now
  [derstappenit]

- Improve the output template, we use tabled based layout now
  [derstappenit]

- improve support for @@images view in image urls


2.6.7 (2012.06.11)
------------------

- Fix translations
  [derstappenit]


2.6.6 (2012-06-04)
------------------

- Added Danish translation.
  [malthe]

- Add mailonly filter, to allow elements only in mails but not in public view
  [derstappenit]

- Add support for @@images view in image urls
  [derstappenit]


2.6.5 (2012-05-04)
------------------

- include mo files in MANIFEST, so that they are included in the package
  [derstappenit]

2.6.4 (2012-05-03)
------------------

- add german translations
  [derstappenit]


2.6.3 (2012-04-30)
------------------

- don't override the issue content after first saving
  [derstappenit]

- rename aggregate action and move this action to object_buttons (actions menu)
  [derstappenit]


2.6.2 (2012-04-20)
------------------

- Improved handling utf-8 strings for the import and export for members
  [frapell]

- Added stoneagehtml package for processing the newsletter's html before
  sending it by mail. This add support for css declararions that will be
  written directly into the html tags to improve rendering results in
  email clients.
  [nueces]

- Added Spanish translation.
  [nueces]

- Fix rendering of images in email-clients.
  [wimbou, WouterVH]

- Fix non-ASCII chars in headers. This fixes
  http://plone.org/products/easynewsletter/issues/17 and
  http://plone.org/products/easynewsletter/issues/19
  [regisrouet, WouterVH]

- Fix breaking dexterity by checking on portal_type instead of meta_type.
  [WouterVH]

- When a subscriber is created via addSubscriber, set language same as newsletter.
  (merged from branch-bpi-rouet-2011-9)
  [regisrouet, WouterVH]

- When importing, set subscriber language same as newsletter.
  (merged from branch-bpi-rouet-2011-9)
  [regisrouet, WouterVH]

- Fix unicode characters in title of issue.
  (merged from branch-unicodefix)
  [mircoangelini, WouterVH]

- i18n for the uploaded/downloaded CSV-file.
  [WouterVH]

- Fix Plone3-compatibility when sending MIMEMultipart-messages.
  [WouterVH]

- A regular Editor can now edit and refresh drafts, without needing
  full Manager-permissions.
  [WouterVH]

- Fix unicode decode error when sending newsletter issues with special
  characters in the title.
  [timo]

- Update Brazilian Portuguese translation
  [ericof]

- fix subscriber tempatlae, to remove the the empty p tag if no description is provided
  [derstappenit]

- use radio buttons instead of selection for salutation selection in subscriber template
  [derstappenit]

2.6.1 (2011-11-23)
------------------

- Fix mail rendering in Thunderbird 8.
  [timo]

- Fix German translation for registration notification.
  [timo]

- Use test instead of tests in extras_require to comply with Plone standards.
  [timo]

- Remove test_enl.py tests since it does not test anything that is not covered
  by test_setup.py.
  [timo]


2.6 (2011-10-01)
----------------

- Fix external images url by inserting url directly in html when 'http' is
  encountered. This fixes http://plone.org/products/easynewsletter/issues/15
  [numahel]

- loadContent only when AcquireCriteria is set True.
  Do not override the text when it's False.
  This fixes http://plone.org/products/easynewsletter/issues/4
  [WouterVH]

- Rename "refresh" into "Refresh aggregate body" to make more clear what it
  does. Cfr. http://plone.org/products/easynewsletter/issues/4
  [WouterVH]

- Improve translatable content.
  [wimbou]

- Fix ENLIssue to avoid issue to be sent twice to same recipient.
  [numahell]

- Add Brazilian translation.
  [davilima6]

- Add Dutch translation.
  [WouterVH, wimbou]

- Fix i18n-domain for GS-profiles files.
  [WouterVH]

- Avoid duplicate listing in portal_quickinstaller.
  Fixes http://plone.org/products/easynewsletter/issues/6
  [WouterVH]

- Don't overwrite the metaTypesNotToList-property, but just append our own
  types.
  [WouterVH]


2.5.10a2 (2011-03-11)
---------------------

- Nothing yet.


2.5.10a2 (11/03/2011)
---------------------

- Fix confirm_subscriber and addSubscriber to set salutation from subscribe
  portlet.
  [numahell]

- Fix ENLHTMLParser for unicode URLs.
  [timo]

- Order newsletters and drafts by creation date.
  [timo]

- Set batch_base_url in enl_subscribers_view, this fix the url of batch
  navigation.
  [derstappenit]


2.5.10a1 (15/02/2011)
---------------------

- plone.app.testing test setup added.
  [timo]

- Do not exclude ENL content types from navigation on a content object level.
  Exclude them on content type level in the GS profile.
  [timo]

- Fix UnboundLocalError which comes with the try except statement.
  [derstappenit]

- Fix AttributeError get_all_memberproperties if fmp is available but not
  installed in the quickinstaller.
  [derstappenit]


2.5.9 (15/02/2011)
------------------

- Fix UnboundLocalError: local variable 'o' referenced before assignment, which
  come with the try except to cache image handling errors.
  [derstappenit]


2.5.8 (14/02/2011)
------------------

- Fix optional use of fmp.
  [derstappenit]

- Only add default_template if doesnt exists, this fix error in archetypes_tool
  on update schema.
  [derstappenit]

- Add a BooleanField sendToAllPloneMembers, which can be used to address all
  existing plone members in a newsletter, no need to select all every time new
  user are available.
  [derstappenit]

- Fix url handlink for links and images if url contains empty spaces,
  add z3 resource image support, add images only to html part of the email.
  [derstappenit]

- Cache exception if broken img tags exist that can't be resolved by
  restrictedTraverse, but log the error.
  [derstappenit]


2.5.7 (08/02/2011)
------------------

- Do not encode email addresses when exporting subscribers.
  [timo]

- Make sure the url variable is always set in the handle_starttag method of
  the ENLHTMLParser.
  [timo]

- Fix CSV import with special characters.
  [timo]

- Do not create a persistent file when exporting CSV data, use a temp file
  instead.
  [timo]

- Fix CSV export with special characters.
  [timo]

- Added missing methods for HTML parser in order to preserve HTML references
  and other stuff.
  [dgherman]


2.5.6 (27/01/2011)
------------------

- Create new Sphinx-based documentation.
  [timo]

- Move CSV file format description to the top.
  [timo]

- CSV export added.
  [timo]

- Use TextAreaWidget for the newsletter template body.
  [timo]

- Fix/refactor/rewrite CSV import.
  [timo]

- Fix CSV-Import format description.
  [timo]

- Link to subscriber import added.
  [timo]


2.5.5 (26/01/2011)
------------------

- Remove unneeded dependency to BeautifulSoup.
  [derstappenit]


2.5.4 (11/01/2011)
------------------

- Fix schema of EasyNewsletter and ENLIssues, use copy to create a schema based
  on ATTopicSchema.
  [derstappenit]


2.5.3 (07/01/2011)
------------------

- Fix issue view, now it looks mostly like the html newsletter version in your
  mail client.
  [derstappenit]


2.5.2 (06/01/2011)
------------------

- Add salutation to ENLSubscriber.
  [derstappenit]

- EasyNewsletter and subscriber portlet.
  [derstappenit]

- Make name and salutation optinal in subscriber portlet.
  [derstappenit]

- Remove filter in get_public_body, because we want the look of the public view
  mostly like in the sended mails.
  [derstappenit]

- Optimize issue_send_form to make it more failsave.
  [derstappenit]

- Refacturer the handling of placeholders for salutation and unsubscribelink.
  [derstappenit]

- Reinclude header and footer in mails.
  [derstappenit]

- Fix MultipartMessage-handling, now text and html messages parts have all
  images included.
  [derstappenit]

- Cleanup archetypes schematas of EasyNewsletter and ENLIssue.
  [derstappenit]

- Add many german translations.
  [derstappenit]


2.5.1 (2010/11/30)
------------------

- Added CSV import (to upload_csv.pt, subscribers.py)
  you have to append '@@upload_csv' to your newsletter url to call this page.
  the csv file must look like this (email is required)::

    "fullname","email","organization"
    "John Doe","john.doe@yahoo.com","ACME Corp."
    "","admin@plone.org",""

  [nan]


2.5.0 (2010/11/26)
--------------------

- Final release.


2.5.0b6 (2010/11/24)
--------------------

- Fixed issue default view (``refresh`` documentation did not work).
  [ajung]


2.5.0b5 (2010/11/23)
--------------------

- Fixed error handling in send().
  [ajung]

- Made unsubscribe code more robust.
  [ajung]


2.5.0b4 (2010/11/19)
--------------------

- Compatibility fixes with Plone 3/4.
  [ajung]

- Default template mechanism while creating a new issue did not work.
  [ajung]


2.5.0b3 (2010/11/18)
--------------------

- Subcollections view did not work.
  [ajung]


2.5.0b2 (2010/11/16)
--------------------

- Fixed encoding issue with the member vocabulary.
  [ajung]


2.5.0b1 (2010/11/16)
--------------------

- Added support for Zope utilities providing the ISubscriberSource
  interface to hook in external subscriber sources (e.g. some sub-system
  managing subscriptions to newsletters on their own (instead of relying
  on instances of 'Subscriber' located inside the newsletter folder itself).
  [ajung]

- The 'Subscribers' tab of Issue instance now also includes subscribers
  from an utility providing ISubscriberSource.
  [ajung]

- The Newsletter instance now got an new schemata 'External' and a new
  option to configure an utility providing ISubscriberSource.
  [ajung]

- It is now possible to configure a dedicated MailHost for newsletter
  delivery other than the configured Plone MailHost (see External tab
  of the Newsletter instance). An external delivery service must be
  configured as named utility providing IMailHost.
  [ajung]

- Major refactoring of the send() method of ENLIssue.
  [ajung]

- Added getFiles() API to ENLIssue for auto-generating a listing
  of files attached to the newsletter body upon send time.
  [ajung]

- Personal information like the salutation {% subscriber-fullname %}
  must no longer be located inside the newsletter body but should be
  moved out to the header and footer sections.
  [ajung]

- Replace enl_issue_view with a rendered view of the newsletter without
  header and footer.
  [ajung]

- Added all types to portal_factory configuration.
  [ajung]

- Added @@all_issues_view to Newsletter implementation.
  [ajung]

- Plone 4 compatibility fixes.

- Various cleanup.
  [ajung]


2.0.1 (2010-07-31)
-----------------------

- Bugfix: use the Zope MailHost for conformations mails, instead of sendmail.
  Now you settings in plone sitesetup will respected ;).


2.0 (2010-07-16)
-----------------------

- Integrate the header and footer field into email text.

- Add possibility to define a default header and footer in the Newsletter
  container.

- Add fullname attribute to subscriber.

- Add description and fullname to subscriber portlet.

- Add usefull path description to subscriber portlet and allow also a path
  starting with '/'.

- Add plone members and groups selection to Newsletter and Issue.

- Use inqbus.fastmemberproperties to get all memberproperties fast.
  (inqbus.fastmemberproperties is now required!)

- Add personalization of emails.

- Add PERSOLINE marker to indicate personalize lines, this lines are removed in
  archive view.

- Add TemplateField to the Newsletter container to cutomize the output format
  of the mailing/newsletter.

- Make sending more robust, catch Exceptions and log it, insted of breaking up
  in the middle of sending procedure.

- Move confirmation mail subject and text out into Newsletter settings to make
  it customizeable.

- Add Double Opt-in to subscribe process.


1.0 beta 3 (2009-12-24)
-----------------------

- Removed subscribers and templates from navigation.

- Batch subscribers.


1.0 beta 2 (2009-12-19)
-----------------------

- Added missing non-python files.


1.0 beta 1 (2009-12-19)
-----------------------

- First version for Plone 3.



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/collective/Products.EasyNewsletter",
    "name": "Products.EasyNewsletter",
    "maintainer": "MrTango",
    "docs_url": "https://pythonhosted.org/Products.EasyNewsletter/",
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "Plone Newsletter Mailing Email Mailinglist",
    "author": "Maik Derstappen (MrTango)",
    "author_email": "md@derico.de",
    "download_url": "https://files.pythonhosted.org/packages/62/ba/3460d6682d9d19b036c2c622e8e0d85d78fce9c74f5447ab71fdc8964e41/Products.EasyNewsletter-5.0.11.tar.gz",
    "platform": null,
    "description": "EasyNewsletter\n==============\n\n.. image:: https://github.com/collective/Products.EasyNewsletter/workflows/Plone%20package/badge.svg\n    :target: https://github.com/collective/Products.EasyNewsletter/actions\n\n.. image:: https://codecov.io/gh/collective/Products.EasyNewsletter/branch/master/graph/badge.svg?token=xEu330kMw5\n    :target: https://codecov.io/gh/collective/Products.EasyNewsletter   \n\n.. image:: https://img.shields.io/pypi/v/Products.EasyNewsletter.svg\n    :target: https://pypi.python.org/pypi/Products.EasyNewsletter/\n    :alt: Latest Version\n\n.. image:: https://img.shields.io/pypi/status/Products.EasyNewsletter.svg\n    :target: https://pypi.python.org/pypi/Products.EasyNewsletter/\n    :alt: Egg Status\n\n.. image:: https://img.shields.io/pypi/pyversions/Products.EasyNewsletter.svg\n    :target: https://pypi.python.org/pypi/Products.EasyNewsletter/\n    :alt: Supported - Python Versions\n\n.. image:: https://img.shields.io/pypi/l/Products.EasyNewsletter.svg\n    :target: https://pypi.python.org/pypi/Products.EasyNewsletter/\n    :alt: License\n\nEasyNewsletter is a simple but powerful newsletter/mailing add-on for Plone.\n\nCompatibility\n-------------\n\n* EasyNewsletter versions >= 5.x are Plone 5.1 and above only, they are free of Archetypes and **support Python 3**.\n* EasyNewsletter versions >= 4.x Plone 5.1 only, they are using DX but still have Archetypes dependencies for migration.\n* For Plone versions < 5.1, use the 3.x branch and releases of EasyNewsletter!\n\nFor Python 2.7 you have to pin down html2text:\n\n    html2text = <2019.8.11\n\n\nFeatures\n========\n\n* Plain text and HTML newsletters (including images)\n\n* manual written newsletters/mailings\n\n* automatic Plonish newsletters/mailings: Utilize Plone's Collections to collect content)\n\n* send out daily/weekly/monthly issues automatically,\n  based on collections (by cron or clock-server)\n\n* flexible templates for Collections, to generate newsletter content\n\n* TTW customizable output template to generate HTML newsletters\n\n* personalized emails\n\n* subscribing/ unsubscribing\n\n* import/export subscribers via CSV\n\n* use Plone Members/Groups as receivers (works also with Membrane)\n\n* external subscriber filtering/manipulation with plugins (filter out or add more subscribers)\n\n* synchronous/ asynchronous send out [currently not reimplemented, if you need this, you have to wait for future versions or fund the work on this feature]\n\n* external\n\n  * subscriber sources (configured through a Zope utility) [currently not reimplemented]\n  * delivery services (other than Plone MailHost) [currently not reimplemented]\n\n\nRequirements\n============\n\n* Plone 5.1 (tested)\n* Dexterity (Archetypes for migration)\n\n\nInstallation\n============\n\n1. Add ``Products.EasyNewsletter`` to your buildout\n2. Run your buildout script\n3. Restart Plone\n4. Install EasyNewsletter via Plone Management Interface\n5. Add a Newsletter to the Plone site\n6. Add a \"Newsletter Subscriber\" portlet and select a Newsletter\n   (To this newsletter, the subscribers will be added).\n\n\nDocumentation\n=============\n\nFor more documentation please visit: http://productseasynewsletter.readthedocs.io\n\n\nKnown Issues\n============\n\n* 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.\n\n\nSource Code\n===========\n\nSource code is at GitHub: https://github.com/collective/Products.EasyNewsletter\n\nTranslations\n============\n\n.. image:: https://hosted.weblate.org/widgets/products-easynewsletter/-/products-easynewsletter/multi-auto.svg\n    :target: https://hosted.weblate.org/engage/products-easynewsletter/\n    :alt: translation status\n\nPlease help us to improve translations with weblate.\nhttps://hosted.weblate.org/engage/products-easynewsletter/\n\nBug tracker\n===========\n\nIssue tracker is at GitHub: https://github.com/collective/Products.EasyNewsletter/issues\n\nToDo\n====\n\nfunding welcome ;)\n\n- async task queue for WGSI as an alternative to collective.taskqueue which will not support WGSI\n- Integration of Mosaico newsletter editor\n- External subscriber sources / delivery services\n- content migration AT >> DX\n\n\nMaintainer\n==========\n\n* Maik Derstappen [MrTango] md@derico.de\n\n\nContributors\n============\n\n* Kai Dieffenbach: initial release\n* Andreas Jung\n* Dinu Gherman\n* Jens W. Klein\n* Peter Holzer\n* Philip Bauer\n* Thomas Massman [tmassmann]\n* Timo Stollenwerk\n\nChangelog\n=========\n\n\n5.0.11 (2022-07-08)\n-------------------\n\n- add missing upgrade step to upgrade easynewsletter portal_types action category names\n  [MrTango]\n\n\n5.0.10 (2022-05-09)\n-------------------\n\n- fix actions category name, we need to have a prefix here, otherwise permission check will not work correctly\n  [MrTango]\n\n- Fix default value when no salution was found in salutation_mappings\n  [MrTango]\n\n\n5.0.9 (2022-03-25)\n------------------\n\n- Optimize banner url, use cached version from plone.namedfile\n  [MrTango]\n\n\n5.0.8 (2022-02-28)\n------------------\n\n- use custom LocalLoader for emails.transformer, to load images instead of doing this via request\n  [MrTango]\n\n\n5.0.7 (2022-02-10)\n------------------\n\n- Add marker classes aggregatedContentSlot/aggregatedContent\n  [MrTango]\n\n\n5.0.6 (2021-06-16)\n------------------\n\n- Improve error handling on email building and sending.\n  [MrTango]\n\n\n5.0.5 (2021-04-23)\n------------------\n\n- Use min-height for iframe \"enl-issue-preview\" instead of fixed height in tag.\n  [MrTango]\n\n\n5.0.4 (2021-04-22)\n------------------\n\n- Improve iframe reziser handling for online view of newsletter issues. Works now better even if JS is broken. Also disable requireJS for the injected JS.\n  [MrTango]\n\n- fix preview_html method/separat preview window view\n  [MrTango]\n\n\n5.0.3 (2021-04-14)\n------------------\n\n- Fix image handling in aggregation templates\n  [MrTango]\n\n\n5.0.2 (2021-03-22)\n------------------\n\n- Fix wrong redirect urls for error redirects in subscribers-upload form\n  [MrTango]\n\n\n5.0.1 (2021-03-16)\n------------------\n\n- Add preview parameter to _render_output_html, which can be used to distinguish preview from email rendering\n  [MrTango]\n\n\n5.0.0 (2021-02-04)\n------------------\n\n- use email_validator.validate_email in plone_user vocab, fixes #159\n  [MrTango]\n\n\n5.0.0b3 (2021-02-03)\n--------------------\n\n- Fix dublicate text in action buttons on newsletter-subscribers view.\n  [MrTango]\n\n\n5.0.0b2 (2021-02-03)\n--------------------\n\n- Don't fail sending process when one email fails\n  [thomasmassmann]\n\n- Fix helper method: get_results_from_aggregation_sources, which can be used for a table of contents\n  [MrTango]\n\n- Update output_blacksee template with a TOC and some CSS cleanup\n  [MrTango]\n\n- Switch from travis to Github-Actions and fix tests\n  [MrTango]\n\n- Fixed empty epilog error #162\n  [iham]\n\n- Add Newsletter title to the unsubscribe email subject #131\n  [MrTango]\n\n\n5.0.0b1 (2020-03-08)\n--------------------\n\n- Add userid to member property dict for plone subscribers.\n  [thomasmassmann]\n\n- Add information about sent emails to Newsletter Issue.\n  [thomasmassmann]\n\n\n5.0.0a9 (2019-12-14)\n--------------------\n\n- Force immediate sending in MailHost\n  [MrTango]\n\n- Add portal messages with send_counter/send_error_counter\n  [MrTango]\n\n- Add divers for salutation and make salutation optional in subscriber portlet\n  [MrTango]\n\n- Refacture locales/update.py and fix german translations\n  [MrTango]\n\n\n5.0.0a8 (2019-12-12)\n--------------------\n\n- Fix unsubscribe url in subscriber portlet\n  [MrTango]\n\n- Allow subscribers to not fill-in the Name, when subscribing\n  [MrTango]\n\n- Add additional_info field to subscriber portlet, useful for things like terms and conditions\n  [MrTango]\n\n- Allow local Plone users and groups to be used as recipients\n  [tmassman]\n\n\n5.0.0a7 (2019-10-09)\n--------------------\n\n- Fix subscribers csv download/export (Py3/Py27)\n  [MrTango]\n\n\n5.0.0a6 (2019-10-08)\n--------------------\n\n- Improve placeholder docs and implementation, only use lower case placeholders from now on\n  [MrTango]\n\n- remove old entries in portal_types registration from uninstall profile\n  [MrTango]\n\n\n5.0.0a5 (2019-10-07)\n--------------------\n\n- Add placeholder for calendar_week\n  [MrTango]\n\n\n5.0.0a4 (2019-10-04)\n--------------------\n\n- Fix upgrade step 4004\n  MrTango\n\n\n5.0.0a3 (2019-10-04)\n--------------------\n\n- Fix MANIFEST after changing package structure\n  [MrTango]\n\n\n5.0.0a2 (2019-10-04)\n--------------------\n\n- Fix setup.py by providing z3c.autoinclude entrypoint\n  [MrTango]\n\n5.0.0a1 (2019-09-23)\n--------------------\n\n- Remove Archetypes from code base and remove Archetypes dependencies\n  [MrTango]\n\n\n4.0.0 (unreleased)\n--------------------\n\n- Implement content types in Dexterity instead of Archetypes\n  [MrTango]\n\n- Refactored sending and personalization, as well as issuedatafetcher adapter\n  [MrTango]\n\n- Implement Plone user/groups sources as behaviors\n  [MrTango]\n\n- Implement Collection behavior which supports aggregation templates on each collection\n  [MrTango]\n\n- Add modern views for most of the existing once, which plonecli, containing basic tests\n  [MrTango]\n\n- Add vocabularies for all Archetypes DisplayLists\n  [MrTango]\n\n- Fix unsubscribe_view and add some checks/tests for security\n  [MrTango]\n\n\n3.0.9 (unreleased)\n------------------\n\n- Nothing changed yet.\n\n\n3.0.8 (2019-08-19)\n------------------\n\n- Make effectiveDate visible on ENLIssue and use it in Newsletter archive view instead of modified date for sorting\n  [MrTango]\n\n\n3.0.7 (2019-08-15)\n------------------\n\n- Allow send action only in draft state to prevent side effects for users.\n  [agitator]\n\n- Fix styles for subscriber portlet\n  [MrTango]\n\n- fix plone4 setup, by pinning plone.api to recent version\n  [MrTango]\n\n- Fix spelling in template\n  [MrTango]\n\n- Add plone.protect support to confirm-subscriber view and fix redirect to ENL object\n  [MrTango]\n\n\n3.0.6 (2018-02-18)\n------------------\n\n- DisableCSRFProtection for daily issue views, which are triggered by cron\n  jobs\n  [MrTango]\n\n\n3.0.5 (2017-11-22)\n------------------\n\n- Use same cmf.ReviewPortalContent permission for taskqueue sendout as with standard sendout.\n  [agitator]\n\n- Show newsletter toolbar for reviewers.\n  [agitator]\n\n- Set effective date after sending an issue.\n  [Gagaro]\n\n- Fix subscriber portlet, it now reflects all settings also on addform\n  [MrTango]\n\n\n3.0.4 (2017-09-25)\n------------------\n\n- add plone.protect >= 3.1.1 and plone4.csrffixes>=1.1 as dependencies\n  [MrTango]\n\n\n3.0.3 (2017-09-12)\n------------------\n\n- Show all placeholders with dummy data in the separate preview window\n  [MrTango]\n\n\n3.0.2 (2017-07-29)\n------------------\n\n- Fix iFrameReziser in ENL Issue preview\n  [MrTango]\n\n\n3.0.1 (2017-07-21)\n------------------\n\n- Add test and documentation for customizing email personalization in addons.\n  [MrTango]\n\n\n3.0 (2017-07-16)\n----------------\n\n- Use globaly unique Content-Id for attached images. This fixes caching issues in some clients.\n  [MrTango]\n\n- Fix resolving default salutation\n  [MrTango]\n\n\n3.0b3 (2017-06-13)\n------------------\n\n- Just fix broken release on pypi\n\n\n3.0b2 (2017-06-12)\n------------------\n\n- CSV import checks for duplicates based on email and updates existing subscribers.\n  [agitator]\n\n- Show newsletter issue preview in iframe\n  [agitator]\n\n- Refactured output and aggregation template rendering\n  [MrTango]\n\n- no write on read for issue public view anymore\n  [MrTango]\n\n- fixed permissions of issue in sent state\n  [MrTango]\n\n- refacture daily_issue view to work with new aggregation templates\n  [MrTango]\n\n- improved newsletter menu handling\n  [agitator]\n\n- Update documentation\n  [MrTango]\n\n\n3.0b1 (2017-05-15)\n------------------\n\n- Use new Collections for aggregating content\n  [MrTango]\n\n- Provide more and better email tempalte (output and aggregation)\n  Templates are based and inspired on: https://github.com/mailchimp/email-blueprints\n  [MrTango]\n\n- Added newsletter toolbar and icons for Plone 5\n  [agitator]\n\n- A bunch of fixes in order to work better with Plone 5, plone.protect/CSRF protection and also some cleanup.\n  [jensens]\n\n- ``collective.taskqueue`` asynchronous send out support added.\n  [jensens]\n\n- Made sent issues visible to public\n  [agitator]\n\n- Give a redirect with a status message back to the issue page after sending a\n  news letter issue directly (without asynchronous queueing), this was broken\n  after the zamqp support was added.\n  [fredvd]\n\n- Do a transaction.commit() after changing the Issue workflow to 'sending' so\n  we are certain another incoming request for sending the issue will see the\n  change and fail in direct send mode. (Fixes #83)\n  [fredvd]\n\n- Only add IDisableCSRFProtection to the unsubscribe view if the supported\n  newer plone.protect is available. Don't force dependency on plone.protect\n  3.X\n  [fredvd]\n\n- zamqp: removed auto_delete property to keep sending queues on consumer restart\n  [agitator]\n\n- Added firstname, lastname and gender to enl_receivers dictionary\n  [agitator]\n\n- Added IBeforePersonalizationEvent for customisations\n  [jensens]\n\n- Use jinja syntax for template processing\n  [jensens]\n\n- Rafactoring of ENLIssue personalization\n  [jensens]\n\n- Language independent CSV Header\n  [agitator]\n\n- Unsubscribe page works now with plone.protect enabled\n  [agitator]\n\n- Changed unsubscribe target link to navigation root, to allow unsubscribe from a private newsletter without showing the login page.\n  [agitator]\n\n- Fixed renaming issue on copy_as_draft\n  [agitator]\n\n- Fixed usage of inline images from plone.app.contenttypes.\n  [agitator]\n\n- Clean up upgrade steps for adding catalog indexes. There's only one method in   setuphandlers now that adds indexes when they not already exist.\n  [fredvd]\n\n- Add extra textlines and corresponding translations id's in the drafts,\n  masters and templates overview to clarify the difference in usage between\n  them.\n  [fredvd]\n\n- Update Spanish translation\n  [macagua]\n\n- Added more improvements about i18n\n  [macagua]\n\n- Supported by v3.x is Plone 4.3.x+ and later.\n  [jensens, agitator]\n\n- Added optional queued sendout using ``collective.zamqp``. In order to not\n  enqueue twice the workflow goes over a sending state now.\n  [jensens]\n\n- Update french translation by adding missing labels\n  [mordicusetcubitus]\n\n- Now use site_properties default charset for email subscription confirmation\n  Before this was done using us-ascii preventing from displaying properly\n  non ascii letters like \u00e9\u00e0\u00f9...\n  [mordicusetcubitus]\n\n- Fixed jquery initialization in enl_edithelper.js and make it work again.\n  It didn't hide the user selection fields.\n  [benniboy]\n\n- Status and error messsages show up for anon users (was broke).\n  [benniboy]\n\n- Implemented that subscribers and recipients have a language. This is also\n  queable via index and the affecting page templates have been adjusted.\n  [benniboy]\n\n- Made a checkbox in the send issue form to exclude all external subscribers.\n  [benniboy]\n\n- Split up the send method for better hookability.\n  [benniboy]\n\n- Reworked the whole issue workflow. See README.\n  [benniboy]\n\n- Added info on several newsletter fields, that changing settings does not\n  affect already existing issues for that newsletter.\n  [benniboy]\n\n- Fixed enl_edithelper.py work again.\n  [benniboy]\n\n- Added 2 new constants to the config.py for hookability and adjusted the\n  affected files to look up those constants.\n  [benniboy]\n\n- Fixed a subscriber can now unsubscribe himself, if he is not logged in.\n  [benniboy]\n\n- Reworked the salutation mapping (prepared for multilingual newsletter)\n  [benniboy]\n\n- Added utf-8 headers, sorted imports (plone-style), lines down to 80 chars.\n  Unified qa in ``qa.cfg``, enforce more qa rules.\n  [jensens]\n\n- Extended subscriber for firstname, lastname and prefix,\n  updated csv export and import. Added migration step.\n  [agitator]\n\n- Added subscriber to SearchableText index, but excluded from default results.\n  [agitator]\n\n- Updated portlet fields, fullname is now \"generic\" name. Updated portlet options\n  to be queried for at subscription time.\n  [agitator]\n\n- Marked E-Mail, Salutation and Name as required if present in subscription portlet.\n  [agitator]\n\n- Change subscriber search into fulltext search via SearchableText\n  [agitator]\n\n\n2.6.14 (2014-07-10)\n-------------------\n\n- Update german translations\n  [MrTango]\n\n\n2.6.13 (2014-06-05)\n-------------------\n\n- Added tests for sending images\n  [djay]\n- Fixed issues with sending images in Plone 4.0-4.3\n  [djay]\n- Switch to ModifyPortalContent as main permission\n  [djay]\n- Added a unsubscribe form that allow unsubscribing direcly from the website\n  [MrTango]\n- Added some test for the unsubscribe views\n  [MrTango]\n- Reduce code complexity in ENLIssue and fix all pep8 violations\n  [MrTango]\n- Do the unicode check for handle_startendtag as well\n  [jean]\n\n\n\n2.6.12 (2013-11-01)\n-------------------\n\n- Correct non user fullname show/hide parameter usage: was always showed.\n  [MordicusEtCubitus]\n\n- Add French translation.\n  [toutpt, MordicusEtCubitus]\n\n- Add @@daily-issue view, in order to send issues with cron or clock-server.\n  [tcurvelo]\n\n- Change permission to send daily issue to ManagePortal.\n  [tcurvelo]\n\n- Improve responses and tests for daily issues.\n  [tcurvelo]\n\n- Adapted to Plone 4.3.\n  [ksuess, rohberg]\n\n- Fix exception handling in get_plone_members.\n  [derstappenit]\n\n- Fix description for Newsletter Template field in ENLIssue.\n  [djowett]\n\n- Add documentation for how to use filter to filter newsletter receivers.\n  [MrTango]\n\n- Optimize get_plone_member.\n  [MrTango]\n\n- Update Products/EasyNewsletter/content/EasyNewsletter.py 'results' not\n  initialized properly in case of an error.\n  [zopyx]\n\n- Fix import of getSite for plone3.\n  [MrTango]\n\n- Update pt_BR translation.\n  [tcurvelo]\n\n- Fix check for already existing subscriber when registering. Hide\n  enl_actions viewlet from public audience.\n  [petschki]\n\n- Allow registration without chosing a gender.\n  [pbauer]\n\n- i18n for default template.\n  [davilima6]\n\n- No more global definitions in templates.\n  [davilima6]\n\n- Corrections and Anglicization of Default newsletter templates.\n  [djowett]\n\n\n2.6.11 (2012-07-11)\n-------------------\n\n- Fix translations\n  [derstappenit]\n\n- Move Manage aggregation templates action into object_button aka actions menu\n  [derstappenit]\n\n\n2.6.10 (2012-07-10)\n-------------------\n\n- fix the email format, we don't use MIMEMultipart for the plain text part of the email, this fix problems with thunderbird\n  [derstappenit]\n\n\n2.6.9 (2012-07-06)\n------------------\n\n- we now use the modification date in Archive and Drafts view\n  [derstappenit]\n\n- ENLIssue now only editable if status is not Send\n  [derstappenit]\n\n- Newsletter UI cleanup, the archive, drafts and subscriber actions now in a smal viewlet, this reduce the buttons to make it clear\n  [derstappenit]\n\n- Issue UI cleanup, the actions for criteria and sub collections are move into object_buttons aka actions menu\n  [derstappenit]\n\n\n2.6.8 (2012-07-03)\n------------------\n\n- Improve the default template for content aggregation, we use tabled based layout now\n  [derstappenit]\n\n- Improve the output template, we use tabled based layout now\n  [derstappenit]\n\n- improve support for @@images view in image urls\n\n\n2.6.7 (2012.06.11)\n------------------\n\n- Fix translations\n  [derstappenit]\n\n\n2.6.6 (2012-06-04)\n------------------\n\n- Added Danish translation.\n  [malthe]\n\n- Add mailonly filter, to allow elements only in mails but not in public view\n  [derstappenit]\n\n- Add support for @@images view in image urls\n  [derstappenit]\n\n\n2.6.5 (2012-05-04)\n------------------\n\n- include mo files in MANIFEST, so that they are included in the package\n  [derstappenit]\n\n2.6.4 (2012-05-03)\n------------------\n\n- add german translations\n  [derstappenit]\n\n\n2.6.3 (2012-04-30)\n------------------\n\n- don't override the issue content after first saving\n  [derstappenit]\n\n- rename aggregate action and move this action to object_buttons (actions menu)\n  [derstappenit]\n\n\n2.6.2 (2012-04-20)\n------------------\n\n- Improved handling utf-8 strings for the import and export for members\n  [frapell]\n\n- Added stoneagehtml package for processing the newsletter's html before\n  sending it by mail. This add support for css declararions that will be\n  written directly into the html tags to improve rendering results in\n  email clients.\n  [nueces]\n\n- Added Spanish translation.\n  [nueces]\n\n- Fix rendering of images in email-clients.\n  [wimbou, WouterVH]\n\n- Fix non-ASCII chars in headers. This fixes\n  http://plone.org/products/easynewsletter/issues/17 and\n  http://plone.org/products/easynewsletter/issues/19\n  [regisrouet, WouterVH]\n\n- Fix breaking dexterity by checking on portal_type instead of meta_type.\n  [WouterVH]\n\n- When a subscriber is created via addSubscriber, set language same as newsletter.\n  (merged from branch-bpi-rouet-2011-9)\n  [regisrouet, WouterVH]\n\n- When importing, set subscriber language same as newsletter.\n  (merged from branch-bpi-rouet-2011-9)\n  [regisrouet, WouterVH]\n\n- Fix unicode characters in title of issue.\n  (merged from branch-unicodefix)\n  [mircoangelini, WouterVH]\n\n- i18n for the uploaded/downloaded CSV-file.\n  [WouterVH]\n\n- Fix Plone3-compatibility when sending MIMEMultipart-messages.\n  [WouterVH]\n\n- A regular Editor can now edit and refresh drafts, without needing\n  full Manager-permissions.\n  [WouterVH]\n\n- Fix unicode decode error when sending newsletter issues with special\n  characters in the title.\n  [timo]\n\n- Update Brazilian Portuguese translation\n  [ericof]\n\n- fix subscriber tempatlae, to remove the the empty p tag if no description is provided\n  [derstappenit]\n\n- use radio buttons instead of selection for salutation selection in subscriber template\n  [derstappenit]\n\n2.6.1 (2011-11-23)\n------------------\n\n- Fix mail rendering in Thunderbird 8.\n  [timo]\n\n- Fix German translation for registration notification.\n  [timo]\n\n- Use test instead of tests in extras_require to comply with Plone standards.\n  [timo]\n\n- Remove test_enl.py tests since it does not test anything that is not covered\n  by test_setup.py.\n  [timo]\n\n\n2.6 (2011-10-01)\n----------------\n\n- Fix external images url by inserting url directly in html when 'http' is\n  encountered. This fixes http://plone.org/products/easynewsletter/issues/15\n  [numahel]\n\n- loadContent only when AcquireCriteria is set True.\n  Do not override the text when it's False.\n  This fixes http://plone.org/products/easynewsletter/issues/4\n  [WouterVH]\n\n- Rename \"refresh\" into \"Refresh aggregate body\" to make more clear what it\n  does. Cfr. http://plone.org/products/easynewsletter/issues/4\n  [WouterVH]\n\n- Improve translatable content.\n  [wimbou]\n\n- Fix ENLIssue to avoid issue to be sent twice to same recipient.\n  [numahell]\n\n- Add Brazilian translation.\n  [davilima6]\n\n- Add Dutch translation.\n  [WouterVH, wimbou]\n\n- Fix i18n-domain for GS-profiles files.\n  [WouterVH]\n\n- Avoid duplicate listing in portal_quickinstaller.\n  Fixes http://plone.org/products/easynewsletter/issues/6\n  [WouterVH]\n\n- Don't overwrite the metaTypesNotToList-property, but just append our own\n  types.\n  [WouterVH]\n\n\n2.5.10a2 (2011-03-11)\n---------------------\n\n- Nothing yet.\n\n\n2.5.10a2 (11/03/2011)\n---------------------\n\n- Fix confirm_subscriber and addSubscriber to set salutation from subscribe\n  portlet.\n  [numahell]\n\n- Fix ENLHTMLParser for unicode URLs.\n  [timo]\n\n- Order newsletters and drafts by creation date.\n  [timo]\n\n- Set batch_base_url in enl_subscribers_view, this fix the url of batch\n  navigation.\n  [derstappenit]\n\n\n2.5.10a1 (15/02/2011)\n---------------------\n\n- plone.app.testing test setup added.\n  [timo]\n\n- Do not exclude ENL content types from navigation on a content object level.\n  Exclude them on content type level in the GS profile.\n  [timo]\n\n- Fix UnboundLocalError which comes with the try except statement.\n  [derstappenit]\n\n- Fix AttributeError get_all_memberproperties if fmp is available but not\n  installed in the quickinstaller.\n  [derstappenit]\n\n\n2.5.9 (15/02/2011)\n------------------\n\n- Fix UnboundLocalError: local variable 'o' referenced before assignment, which\n  come with the try except to cache image handling errors.\n  [derstappenit]\n\n\n2.5.8 (14/02/2011)\n------------------\n\n- Fix optional use of fmp.\n  [derstappenit]\n\n- Only add default_template if doesnt exists, this fix error in archetypes_tool\n  on update schema.\n  [derstappenit]\n\n- Add a BooleanField sendToAllPloneMembers, which can be used to address all\n  existing plone members in a newsletter, no need to select all every time new\n  user are available.\n  [derstappenit]\n\n- Fix url handlink for links and images if url contains empty spaces,\n  add z3 resource image support, add images only to html part of the email.\n  [derstappenit]\n\n- Cache exception if broken img tags exist that can't be resolved by\n  restrictedTraverse, but log the error.\n  [derstappenit]\n\n\n2.5.7 (08/02/2011)\n------------------\n\n- Do not encode email addresses when exporting subscribers.\n  [timo]\n\n- Make sure the url variable is always set in the handle_starttag method of\n  the ENLHTMLParser.\n  [timo]\n\n- Fix CSV import with special characters.\n  [timo]\n\n- Do not create a persistent file when exporting CSV data, use a temp file\n  instead.\n  [timo]\n\n- Fix CSV export with special characters.\n  [timo]\n\n- Added missing methods for HTML parser in order to preserve HTML references\n  and other stuff.\n  [dgherman]\n\n\n2.5.6 (27/01/2011)\n------------------\n\n- Create new Sphinx-based documentation.\n  [timo]\n\n- Move CSV file format description to the top.\n  [timo]\n\n- CSV export added.\n  [timo]\n\n- Use TextAreaWidget for the newsletter template body.\n  [timo]\n\n- Fix/refactor/rewrite CSV import.\n  [timo]\n\n- Fix CSV-Import format description.\n  [timo]\n\n- Link to subscriber import added.\n  [timo]\n\n\n2.5.5 (26/01/2011)\n------------------\n\n- Remove unneeded dependency to BeautifulSoup.\n  [derstappenit]\n\n\n2.5.4 (11/01/2011)\n------------------\n\n- Fix schema of EasyNewsletter and ENLIssues, use copy to create a schema based\n  on ATTopicSchema.\n  [derstappenit]\n\n\n2.5.3 (07/01/2011)\n------------------\n\n- Fix issue view, now it looks mostly like the html newsletter version in your\n  mail client.\n  [derstappenit]\n\n\n2.5.2 (06/01/2011)\n------------------\n\n- Add salutation to ENLSubscriber.\n  [derstappenit]\n\n- EasyNewsletter and subscriber portlet.\n  [derstappenit]\n\n- Make name and salutation optinal in subscriber portlet.\n  [derstappenit]\n\n- Remove filter in get_public_body, because we want the look of the public view\n  mostly like in the sended mails.\n  [derstappenit]\n\n- Optimize issue_send_form to make it more failsave.\n  [derstappenit]\n\n- Refacturer the handling of placeholders for salutation and unsubscribelink.\n  [derstappenit]\n\n- Reinclude header and footer in mails.\n  [derstappenit]\n\n- Fix MultipartMessage-handling, now text and html messages parts have all\n  images included.\n  [derstappenit]\n\n- Cleanup archetypes schematas of EasyNewsletter and ENLIssue.\n  [derstappenit]\n\n- Add many german translations.\n  [derstappenit]\n\n\n2.5.1 (2010/11/30)\n------------------\n\n- Added CSV import (to upload_csv.pt, subscribers.py)\n  you have to append '@@upload_csv' to your newsletter url to call this page.\n  the csv file must look like this (email is required)::\n\n    \"fullname\",\"email\",\"organization\"\n    \"John Doe\",\"john.doe@yahoo.com\",\"ACME Corp.\"\n    \"\",\"admin@plone.org\",\"\"\n\n  [nan]\n\n\n2.5.0 (2010/11/26)\n--------------------\n\n- Final release.\n\n\n2.5.0b6 (2010/11/24)\n--------------------\n\n- Fixed issue default view (``refresh`` documentation did not work).\n  [ajung]\n\n\n2.5.0b5 (2010/11/23)\n--------------------\n\n- Fixed error handling in send().\n  [ajung]\n\n- Made unsubscribe code more robust.\n  [ajung]\n\n\n2.5.0b4 (2010/11/19)\n--------------------\n\n- Compatibility fixes with Plone 3/4.\n  [ajung]\n\n- Default template mechanism while creating a new issue did not work.\n  [ajung]\n\n\n2.5.0b3 (2010/11/18)\n--------------------\n\n- Subcollections view did not work.\n  [ajung]\n\n\n2.5.0b2 (2010/11/16)\n--------------------\n\n- Fixed encoding issue with the member vocabulary.\n  [ajung]\n\n\n2.5.0b1 (2010/11/16)\n--------------------\n\n- Added support for Zope utilities providing the ISubscriberSource\n  interface to hook in external subscriber sources (e.g. some sub-system\n  managing subscriptions to newsletters on their own (instead of relying\n  on instances of 'Subscriber' located inside the newsletter folder itself).\n  [ajung]\n\n- The 'Subscribers' tab of Issue instance now also includes subscribers\n  from an utility providing ISubscriberSource.\n  [ajung]\n\n- The Newsletter instance now got an new schemata 'External' and a new\n  option to configure an utility providing ISubscriberSource.\n  [ajung]\n\n- It is now possible to configure a dedicated MailHost for newsletter\n  delivery other than the configured Plone MailHost (see External tab\n  of the Newsletter instance). An external delivery service must be\n  configured as named utility providing IMailHost.\n  [ajung]\n\n- Major refactoring of the send() method of ENLIssue.\n  [ajung]\n\n- Added getFiles() API to ENLIssue for auto-generating a listing\n  of files attached to the newsletter body upon send time.\n  [ajung]\n\n- Personal information like the salutation {% subscriber-fullname %}\n  must no longer be located inside the newsletter body but should be\n  moved out to the header and footer sections.\n  [ajung]\n\n- Replace enl_issue_view with a rendered view of the newsletter without\n  header and footer.\n  [ajung]\n\n- Added all types to portal_factory configuration.\n  [ajung]\n\n- Added @@all_issues_view to Newsletter implementation.\n  [ajung]\n\n- Plone 4 compatibility fixes.\n\n- Various cleanup.\n  [ajung]\n\n\n2.0.1 (2010-07-31)\n-----------------------\n\n- Bugfix: use the Zope MailHost for conformations mails, instead of sendmail.\n  Now you settings in plone sitesetup will respected ;).\n\n\n2.0 (2010-07-16)\n-----------------------\n\n- Integrate the header and footer field into email text.\n\n- Add possibility to define a default header and footer in the Newsletter\n  container.\n\n- Add fullname attribute to subscriber.\n\n- Add description and fullname to subscriber portlet.\n\n- Add usefull path description to subscriber portlet and allow also a path\n  starting with '/'.\n\n- Add plone members and groups selection to Newsletter and Issue.\n\n- Use inqbus.fastmemberproperties to get all memberproperties fast.\n  (inqbus.fastmemberproperties is now required!)\n\n- Add personalization of emails.\n\n- Add PERSOLINE marker to indicate personalize lines, this lines are removed in\n  archive view.\n\n- Add TemplateField to the Newsletter container to cutomize the output format\n  of the mailing/newsletter.\n\n- Make sending more robust, catch Exceptions and log it, insted of breaking up\n  in the middle of sending procedure.\n\n- Move confirmation mail subject and text out into Newsletter settings to make\n  it customizeable.\n\n- Add Double Opt-in to subscribe process.\n\n\n1.0 beta 3 (2009-12-24)\n-----------------------\n\n- Removed subscribers and templates from navigation.\n\n- Batch subscribers.\n\n\n1.0 beta 2 (2009-12-19)\n-----------------------\n\n- Added missing non-python files.\n\n\n1.0 beta 1 (2009-12-19)\n-----------------------\n\n- First version for Plone 3.\n\n\n",
    "bugtrack_url": null,
    "license": "GPL",
    "summary": "Powerful newsletter/mailing addon for Plone",
    "version": "5.0.11",
    "project_urls": {
        "Homepage": "https://github.com/collective/Products.EasyNewsletter"
    },
    "split_keywords": [
        "plone",
        "newsletter",
        "mailing",
        "email",
        "mailinglist"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3c2fb7ce3b9851826841f5d192d0d154ca771ab55498d38ca636b77ec7d7cb60",
                "md5": "0261b2df3ce75ed0d28422b5e168d3fb",
                "sha256": "4562dd68671dbec3b109fbb666d58518d7c3c522b89f4782e1b78166c89f58a3"
            },
            "downloads": -1,
            "filename": "Products.EasyNewsletter-5.0.11-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0261b2df3ce75ed0d28422b5e168d3fb",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 410153,
            "upload_time": "2022-07-08T16:33:51",
            "upload_time_iso_8601": "2022-07-08T16:33:51.918957Z",
            "url": "https://files.pythonhosted.org/packages/3c/2f/b7ce3b9851826841f5d192d0d154ca771ab55498d38ca636b77ec7d7cb60/Products.EasyNewsletter-5.0.11-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "62ba3460d6682d9d19b036c2c622e8e0d85d78fce9c74f5447ab71fdc8964e41",
                "md5": "8b0420c173594c40249e0f9ced51a44c",
                "sha256": "64fab06e504e476d9f4cf637f72be07252f29e05dd5b066b2766af8c8518d133"
            },
            "downloads": -1,
            "filename": "Products.EasyNewsletter-5.0.11.tar.gz",
            "has_sig": false,
            "md5_digest": "8b0420c173594c40249e0f9ced51a44c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 329985,
            "upload_time": "2022-07-08T16:33:53",
            "upload_time_iso_8601": "2022-07-08T16:33:53.955316Z",
            "url": "https://files.pythonhosted.org/packages/62/ba/3460d6682d9d19b036c2c622e8e0d85d78fce9c74f5447ab71fdc8964e41/Products.EasyNewsletter-5.0.11.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2022-07-08 16:33:53",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "collective",
    "github_project": "Products.EasyNewsletter",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "requirements": [],
    "tox": true,
    "lcname": "products.easynewsletter"
}
        
Elapsed time: 0.34244s