This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

repoze.sendmail allows coupling the sending of email messages with a transaction, using the Zope transaction manager. This allows messages to only be sent out when and if a transaction is committed, preventing users from receiving notifications about events which may not have completed successfully.

Please see docs/index.rst for complete documentation, or read the docs online at http://docs.repoze.org/sendmail

Change history

4.3 (2016-12-08)

  • Drop support for Python 2.6 and 3.2.
  • Add support for Python 3.4 and 3.5.
  • Add ignore_transient parameter to QueueProcessor, to prevent raising temporary errors in some situations. (PR #37)
  • Reset ‘tpc_phase’ to zero during ‘tpc_abort’ / ‘tpc_finish’. (issue #30)

4.2 (2014-02-17)

  • Add “savepoint” support to transactional mail integration. (PR #24/28)
  • Mail Delivery utilities can now be passed a transaction manager (falling back to the ”transaction.get()“ default), making it easier to override. (PR #27)

4.1 (2013-06-26)

  • Replace ‘utf_8’ encoding name with preferred spelling (‘utf-8’).
  • Replace ‘latin_1’ encoding name with preferred spelling (‘iso-8859-1’)
  • Include the time of the error when logging errors from the queue processor.
  • response.MIMEPart now correctly sets the charset of the email payload if it’s one of the content_type parameters of the Message or Attachment.
  • The SMTPMailer now accepts an “ssl” argument, which, if passed, will cause the SMTP factory to return an SMTP_SSL connection instead of a plain old SMTP connection.
  • The SMTPMailer now uses a 10-second timeout by default, used when an SMTP connection is made but the server does not respond in enough time.

4.0 (2013-04-23)

  • Add support for bulding docs and testing doctest snippets under tox.
  • Add setup.py docs alias (installs Sphinx).
  • Converted docs to Sphinx.

4.0b2 (2013-03-28)

  • Issue #13: fixed handling of headers with with multibyte unicode characters at the point where the header is split into multiple lines.
  • Pull #15 - Extended repoze.sendmail with configurable /usr/sbin/sendmail binary support

4.0b1 (2013-01-09)

  • Dropped support for Jython until a Jython-2.7-compatible version of zope.interface becomes available.
  • Dropped support for Python 2.5.
  • Added suupport for Python 3.3.
  • Improved test for SSL feature under Python 3.x.
  • Added new tests for proper encoding of binary attachments.
  • Cauterized resource leak warnings under Python 3.2.

3.2 (2012-05-03)

  • Issue #7: fixed handling of to/from addresses with non-ascii characters when using queued mail delivery.
  • Suppressed duplicate usage message output from qp.

3.1 (2012-03-26)

  • Fixed qp queue processor mail delivery under Python 3.0.
  • Added ‘setup.py dev’ alias (runs setup.py develop plus installs nose and coverage).

3.0 (2012-03-20)

  • Fixed Message-Id handling (see http://bugs.repoze.org/issue177).
  • Provided improved support for encoding messages to bytes. It should now be possible to represent your messages in email.message.Message objects just with unicode (excepting bytes for binary attachments) and the mailer will handler it as appropriate.
  • Added tests for cPython 2.5, 2.6, 2.7, 3.2, jython 2.5 and pypy 1.8 compatibility.

2.3 (2011-05-17)

  • Queued delivery now creates a copy of the passed in messsage before adding the ‘X-Actually-{To,From}’ headers. This avoids rudely mutating the message being sent in ways that might not be expected by the sender. (LP #780000)

2.2 (2010-09-14)

  • Made debug output for SMTP mailer optional. (Thanks to Igor Stroh for patch.)

2.1 (2010-07-28)

  • Silently ignore redundant calls to abort transaction. (LP #580164)

2.0 (2010-03-10)

Represents major refactoring with a number of backwards incompatible changes. The focus of the changes is on simplifying and updating the internals, removing usage of deprecated APIs, removing unused functionality and using the email module from the standard library wherever possible. A few changes have been made solely to reduce internal complexity.

  • Public facing APIs no longer accept messages passed as strings. Messages must be instances of email.message.Message.
  • Deprecated APIs have been replaced with newer ‘email’ module throughout.
  • Functions that return message ids no longer strip containing less than and greater than characters.
  • Events were removed entirely. There was nothing in the code actually performing a notify anyway. Removes dependency on zope.event.
  • Normalized directory structure. (Got rid of ‘src’ directory.)
  • Got rid of functions to send queued mail from a thread or a daemon process. These are more appropriately handled in the calling code.
  • Removed vocabulary. It was a fossil from its days as zope.sendmail and was not used by anything.
  • Got rid of the zcml directives. These were written in such a way that you would end up putting deployment configuration in your zcml, which is a fundamentally broken pattern. Users of the ZCA may still register utilities aginst the IMailDelivery and IMailer interfaces. This is the recommended way to use repoze.sendmail with the Zope Component Architecture.
  • Removed all interfaces that did not correspond to a rational plug point. This leaves only IMailDelivery and IMailer.
  • Removed dependency on zope.i18nmessageid
  • No longer works under Python 2.4 (Python 2.5 required).

1.2 (2010-02-11)

  • Maildir storage for queue can now handle unicode passed in for message or to/from addresses.

1.1 (2009-02-24)

  • Added logging to queue processor console app.
  • Added ini config parsing to queue processor console app.

1.0 (2009-02-24)

  • Initial release
  • Copy of zope.sendmail with dependency on security removed.
Release History

Release History

4.3

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

4.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

4.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

4.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

4.0b2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

4.0b1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

3.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

3.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

3.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

2.3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

2.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

2.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
repoze.sendmail-4.3-py2.py3-none-any.whl (40.7 kB) Copy SHA256 Checksum SHA256 2.7 Wheel Dec 8, 2016
repoze.sendmail-4.3.tar.gz (40.7 kB) Copy SHA256 Checksum SHA256 Source Dec 8, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting