Package: poi.receivemail
IntroductionThis package defines a browser view@@poimailthat reads an email
from the request and creates an issue for that or adds a response to
an issue.  It is a bridge betweensmtp2zopeandProducts.Poi.Compatibilitypoi.receivemail has been tested with Plone 4.3 and Poi 2.3.
Since version 3 it usesplone.api.
For earlier versions, please use poi.receivemail 2.x.UsageA standard setup would look like this:You have a Plone Site athttp://example.org/.This Plone Site hasProducts.Poiandpoi.receivemailin its
eggs.The site has a Poi tracker athttp://example.org/tracker.You have installedsmtp2zopeon the same machine (possibly in
the same buildout, but a virtualenv is fine too) and its script is
available at/path/to/smtp2zope.You have a mail server on this machine that has an alias like this:helpdesk@example.org "|/path/to/smtp2zope http://example.org/tracker/@@poimail"or this:helpdesk@example.org "|/path/to/smtp2zope http://admin:secret@example.org/tracker/@@poimail 1000000"Now when someone sends an email tohelpdesk@example.orga new issue
is created in the tracker.  When the subject of the email matches an
existing issue, it is added as response to that issue.When a user is found in the Plone Site that matches the sender
address, we pretend to be that user when creating the issue or
response.  Otherwise, the Creator is anonymous or is the user that
is identified through basic authentication in the url that is passed
as argument tosmtp2zope.Changelog3.0.1 (2017-11-13)Create issue with proper id directly.
Renaming can give hard to debug permission problems
in combination with our adopt_user and adopt_roles.
[maurits]3.0.0 (2017-10-31)Store attachments as blobs.  For example the original email message.  [maurits]Drop support for Python 2.4, because we useplone.api.
Officially drop support for 2.6 too, and for Plone 4.2 and earlier, but it may still work.
[maurits]Use plone.api to adopt a different user and roles.
This is cleaner, and should avoid problems where the faked user did not have a user id.
[maurits]2.0.1 (2017-08-18)Log the sender and subject at info level.
[maurits]Caught several cases where the created issue was invalid.
This caused a workflow exception, which means the issue was never added.
This could happen when an html mail was received and the mime type was not allowed in the details field.
Now we convert the mail text to the default issue mime type.
If the issue is still invalid, we catch the workflow exception and create the issue anyway,
because there is no easy way of signalling this to the sender.
The issue then has thenewstate, which may not be visible in the Poi user interface though.
[maurits]2.0 (2017-01-02)CheckNEEDED_PERMISSIONSbefore faking a manager.  If a user
already has the needed permissions, there is no need to fake a
manager.  [maurits]Fake aTrackerManagerinstead ofManagerwhen possible.
This role was introduced in Products.Poi 2.2 (Plone 4).  This is
done whenFAKE_MANAGERis true, which is the default.  This only
happens for specified IP-addresses.  [maurits]Fixed issue creation for Plone 4.  Posting an issue would fail
because noposttransition was available.  This is because in
Plone 4 this happens automatically on theIObjectInitializedEvent.  Now we only do the transition if the
review state is stillnew.  [maurits]1.13 (2016-12-09)Fixed package: don’t use symlinks.  [maurits]1.12 (2016-12-09)Do more decoding.  Each part can have its own encoding.  We should
use those to make something readable.  [maurits]Decode from quoted printable in a few cases.  [maurits]1.11 (2012-10-14)Moved tohttps://github.com/collective/poi.receivemail[maurits]1.10 (2011-12-14)Fixed wrong match for issue by subject.  While searching for #123 in
the subject line we would match 123 at the beginning of the line as
well, which may give wrong matches.
[maurits]1.9 (2011-11-28)Use the body charset to decode the body text and then encode it as
utf-8 before storing it.
[maurits]Avoid a unicode error when there is no body.
[maurits]Optionally add attachments from the e-mail.  We look for binary
attachments.  These are added as separate responses, as you can only
add one attachment per issue or response.  In config.py we have
added a setting ADD_ATTACHMENTS for this (default True) to make it a
bit easier to switch this off in case of problems or when you do not
want it.
[maurits]Fixed handling multipart messages that have parts that themselves
are multipart.
[maurits]When there is an empty or missing Subject line, use ‘[no subject]’
as title.  We do not try to match such a mail to a previous issue
but always create a new one.
[maurits]1.8 (2011-11-10)Set more fields explicitly, as the createObjectByType call only sets
some of them.
[maurits]1.7 (2011-11-09)When a subject (keyword, category) is given, set that explicitly.
[maurits]Inget_addressesallow getting addresses from headers other than
To and From as well.
[maurits]1.6 (2011-09-06)Prevent issues from being automatically renamed after they are
edited.
[maurits]Prevent some more lower-case email address comparison problems.
[maurits]1.5 (2011-06-22)Make e-mail from address lower-case to prevent search problems with ldap
users. [jladage]1.4 (2011-06-14)When searching PAS for a user by email address, strip off any white
space (like possibly ‘rn’ in ldap) from the returned addresses, to
avoid non-matching for silly reasons.
[maurits]Moved all options to a new config.py file.
[maurits]Add option ADVANCED_SUBJECT_MATCH.  Default is False: we only check
for ‘#123’ in the Subject line, to avoid matching overly generic
Subject lines like ‘Hi’ or ‘Problem’.  To get back the previous
behavior, set this to True (in a patch in your own code, likely).
[maurits]If the subject is empty, do not try to find a matching issue, as all
issues will match.
[maurits]1.3 (2011-05-11)Added FAKE_MANAGER option (default is True) to determine if we
should fake a Manager role to be sure that a post succeeds.
[maurits]While switching users: if ‘email’ is not in the properties (say:
ldap), we can get far too many results; so we do a double check.
[maurits]1.2 (2011-05-09)Ignore mails with the email_from_address as From address, as this
too easily means that a message sent by Poi ends up being added as a
reply on an issue that we have just created.
[maurits]1.1 (2011-05-05)Handle encoded subject lines better.
[maurits]1.0 (2011-05-05)Initial release