Metadata-Version: 2.4
Name: Products.PrintingMailHost
Version: 1.1.8
Summary: A monkey patch to send MailHost messages to standard out
Home-page: https://github.com/collective/Products.PrintingMailHost
Author: Martin Aspeli
Author-email: plone-developers@lists.sourceforge.net
License: GPL
Keywords: zope debug mailhost
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: Plone
Classifier: Framework :: Plone :: 4.3
Classifier: Framework :: Plone :: 5.0
Classifier: Framework :: Plone :: 5.1
Classifier: Framework :: Plone :: 5.2
Classifier: Framework :: Plone :: 6.0
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*
Requires-Dist: setuptools
Requires-Dist: six
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

Products.PrintingMailHost
=========================

This is a hack. :)

This product, when installed, will check if Zope is running in debug mode,
and if so, monkey patch (that is, grab the internals of, squeeze tight, then
rip hard, just like monkeys do) Zope's MailHost class, meaning that *any and
all* uses of a MailHost will be "fixed" so that instead of sending mail, it
prints messages to the zope event log.

This is useful if you don't have a local mailhost for testing, or if you
prefer not to spam the crap out of yourself whilst finding out if your bulk
mail script is working.

If Zope is not running in debug mode, it will not install itself. However,
I wouldn't recommend putting it on a production site. You never know what
those monkeys may get up to...

You can optionally enable the PrintingMailHost with an environment variable
as of version 0.3.  See the installation instructions for more information
about how to use it.


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

Works on Plone 4.3, Plone 5.0, 5.1, 5.2 and 6 (in Python 2.7, and 3.6-3.11).


Author
------

Martin Aspeli <optilude (AT) gmx (DOT) net>
    Initial idea, release management


Contributors
------------

Dorneles Tremea <deo (AT) plonesolutions (DOT) com>
    Fixed to work both with old-style and new-style classes. Extended
    to also patch SecureMailBase from SecureMailHost, if available.

Clayton Parker <clayton (AT) sixfeetup (DOT) com>

Maurits van Rees <maurits (AT) vanrees (DOT) org>

Harald Friessnegger <harald (AT) webmeisterei (DOT) com>


Products.PrintingMailHost Installation
======================================

To include ``Products.PrintingMailHost`` in your pip installation of Plone, just add it to ``requirements.txt``.

To install Products.PrintingMailHost into your Plone instance in
buildout, you can do this:

- Add ``Products.PrintingMailHost`` to the list of eggs to install, e.g.::

    [instance]
    ...
    eggs =
        ...
        Products.PrintingMailHost

- If you want to enable PrintingMailHost when debug-mode is off::

    [instance]
    ...
    environment-vars =
        ...
        ENABLE_PRINTING_MAILHOST True

- If you want to disable PrintingMailHost when debug-mode is on::

    [instance]
    ...
    environment-vars =
        ...
        ENABLE_PRINTING_MAILHOST False

- If PrintingMailHost is enabled, and you *additionally* want to send
  each email to a fixed address, you can add another environment
  variable::

    [instance]
    ...
    environment-vars =
        ...
        PRINTING_MAILHOST_FIXED_ADDRESS admin@example.org

  Or multiple addresses separated by spaces::

        PRINTING_MAILHOST_FIXED_ADDRESS one@example.org two@example.org

  For clarity: this first prints the email, with the original
  recipient address, and then sends an actual email with the same
  contents to the fixed address you have specified.  The original
  recipient is visible in the ``To:`` field.  It is similar to
  receiving a blind carbon copy (bcc) of an email, except that the
  original recipient never gets the email.

- Re-run buildout in order to make any of the above changes active::

    $ ./bin/buildout


Changelog
=========

1.1.8 (2025-06-19)
------------------

- Update readme with compatibility information.  [ksuess]


1.1.7 (2023-02-23)
------------------

- Fixed URL in startup message.  [gforcada]


1.1.6 (2021-05-06)
------------------

- Fix Python 3.9 compatibility.
  [thet]


1.1.5 (2020-11-02)
------------------

- Fix support for MailHost 4.10 (see `issue 33 <https://github.com/zopefoundation/Products.MailHost/issues/33>`_).
  [pbauer]


1.1.4 (2020-06-10)
------------------

- Fixed ``SyntaxError`` in previous release.  [tareqalam]


1.1.3 (2020-06-10)
------------------

- Encoding fix for Python 3
  [ajung]


1.1.2 (2019-03-05)
------------------

- Restore compatability with plone.api.
  [pbauer]


1.1.1 (2019-02-28)
------------------

- Add support Python 3
  [pbauer]


1.1.0 (2018-06-08)
------------------

- Check environment variables in Zope2 `initialize` instead of import time.
  This allows to configure environment-vars in zope.conf and use them when
  starting the instance with slc.zopescript
  [fRiSi]

1.0 (2016-09-20)
----------------

- Treat ``FIXED_ADDRESS`` as a list.  Previously, depending on your
  Plone version. a fixed address could get interpreted as a list of
  single-character email addresses, which of course does not work.
  Now it works properly.  You can also give a list of addresses by
  separating them using spaces: ``one@example.org two@example.org``.
  Fixes https://github.com/collective/Products.PrintingMailHost/issues/4
  [maurits]


0.8 (2015-04-16)
----------------

- Add environment variable ``PRINTING_MAILHOST_FIXED_ADDRESS`` to send
  all emails to a single, fixed address.  PrintingMailHost still needs
  to be enabled, so this is in addition to printing.
  https://github.com/collective/Products.PrintingMailHost/issues/2
  [maurits]

- Since we can enable PMH via an environment variable and thus when not
  running in debug mode / foreground, emails are no longer printed, but
  written to the zope event log.
  [pysailor]


0.7 (2010-01-05)
----------------

- Also patch (Secure)MaildropHost when available.
  [maurits]


0.6 (2010-01-05)
----------------

- Allow passing keyword 'immediate'.  Needed for Plone 4 compatibility.
  [maurits]


0.5 (2009-08-07)
----------------

- Fix email Message import
  [claytron]


0.4 (2009-07-24)
----------------

- Rough support for multipart email messages
  [iElectric]


0.3 (2009-03-22)
----------------

- Decode base64 encoded email messages
  [claytron]

- Added environment variable (ENABLE_PRINTING_MAILHOST) to enable
  or disable PrintingMailHost
  [claytron]

- Update README and HISTORY.txt
  [claytron]


0.2 (2008-08-20)
----------------

- Release as an egg to PyPi
  [claytron]


0.1
---

- Updated to use the new standard log mechanism: logging.getLogger.
  Reformated messages/docstrings.
  [dtremea] (2006-03-17)

- Extended to also patch SecureMailBase from SecureMailHost, if
  available.
  [dtremea] (2005-10-23)

- Fixed to work both with old-style and new-style classes, as in
  the later, dict is a 'dictproxy' instance, which doesn't have the
  setitem method. Bumpped version. Noted changes. And clean up
  whitespaces, of course... ;-)
  [dtremea] (2005-10-23)

- Initial creation/release
  [optilude] (2005-04-05)
