Package: mailtoplone.base
mailtoplone.baseOverviewbasic package for mailtoploneAuthorsStefan Eletzhofer –“<stefan dot eletzhofer at inquant de>”Hans-Peter Locher –“<hans-peter dot locher at inquant de>”Copyright (c) 2007-2008 InQuant GmbH – “http://www.inquant.de”DependenciesAdditional egg dependeciesicalendar
python-dateutilContentsContent TypesInBox:Provides an XMLRPCView to access it’s drop method.
Dropping a mailstring ( a plaintext string containing the whole email including envelope),
a plone content type Email will be generated, the data field will contain the mailstring.Email:File like content type conatining the mailstring inside the data field.
View registered for IEmail: emailview ( as standard view )
shows:headers Subject, From, To, Ccbody (prefers text/html parts over text/plain parts)attachments (download link)AdaptersMailDropBox:Basic adapter, providing a drop method generating an Email out of the dropped mailstringBlogMailDropBox:Advanced adapter, creating a news item out of the dropped mailstring.EventMailDropBox:Advanced adapter, creating an event out of text/calendar attachments inside the dropped mailstringUtilitiesBaseDropBoxFactory:Used to find objects providing IMailDropBoxMarker with id=key. Used by
the deliver action in mailtoplone.contentrules.ICalEventFactory:Taking an icalendar string, this utility creates an ATEvent out of each
VEVENT. The implementation supports keywordarguments, passing them to
invokeFactory.
This implementation correctly imports events exported from plone, as a
first approach.
It is used by the EventMailDropBox.MarkerInterfacesYou can use these markerinterfaces (@@manage_interfaces) to mark a folder
for mailtoplone (remember to reindex the marked object). Afterwards the
folder can be found and delivered mails to.IMailDropBoxMarker(Interface):“”” marker interface for mail drop boxes “””IBlogMailDropBoxMarker(IMailDropBoxMarker):“”” marker interface for blog mail drop boxes “””IEventMailDropBoxMarker(IMailDropBoxMarker):“”” marker interface for event mail drop boxes “””Scriptsdropemail:File system python script, to drop a mail to an inbox(url), specify the mail as file or use stdinvim: set ft=rst tw=75 nocin nosi ai sw=4 ts=4 expandtab:Change historyChangelog0.2.7 (2009-07-22)use subject to generate id for type Email,
so we avoid being limited to 1000 emails per
dropbox (fixes #7) [hplocher]0.2.6 (2008-12-02)fix dependency in setup.py to now require
python-dateutil (was dateutil earlier)correct propertiestool.xml to not purge, and only add Email to
typesUseViewActionInListings [hplocher]for earlier changes see included CHANGELOGDetailed Documentationmailtoplone.baseSetup TestEnvironmentSetting up a inbox containing email1, email2:>>> self.setRoles(('Manager',))
>>> self.portal.invokeFactory('InBox', 'inbox')
'inbox'
>>> self.portal.inbox.invokeFactory('Email', 'email1')
'email1'
>>> self.portal.inbox.invokeFactory('Email', 'email3')
'email3'AdapterLet’s test the drop function useable with the MailDropBox Adapter,
The dropped mails get their id’s using the NameChooser:>>> from mailtoplone.base.interfaces import IMailDropBox
>>> IMailDropBox(self.portal.inbox).drop("some data")
>>> IMailDropBox(self.portal.inbox).drop("some data")
>>> IMailDropBox(self.portal.inbox).drop("some data")
>>> self.portal.inbox.objectIds()
['email1', 'email3', 'email', 'email-1', 'email-2']Let’s test some values of a created email:>>> self.portal.inbox.email.title
'email'
>>> self.portal.inbox.email.data
'some data'
>>> self.portal.inbox.email.meta_type
'Email'Browserview xmlrpcviewLet’s test if the xmlrpcview has a drop method which creates an Email in
the inbox:>>> theview = self.portal.inbox.restrictedTraverse('xmlrpcview')
>>> theview.drop("dropped via view")
>>> self.portal.inbox.objectIds()
['email1', 'email3', 'email', 'email-1', 'email-2', 'email-3']
>>> self.portal.inbox.listFolderContents()[5].data
'dropped via view'Email titleWe generate the tile for email objects out of the subject, otherwise we’ll
take the id.First, let’s create various minimalistic emails:>>> withsubject = 'subject: withsubject'
>>> withSubject = 'Subject: withSubject'
>>> withbetreff = 'betreff: withbetreff'
>>> withBetreff = 'Betreff: withBetreff'Let’s drop this emails to our inbox:>>> theview.drop(withsubject)
>>> self.portal.inbox.listFolderContents()[6].Title()
'withsubject'

>>> theview.drop(withSubject)
>>> self.portal.inbox.listFolderContents()[7].Title()
'withSubject'

>>> theview.drop(withbetreff)
>>> self.portal.inbox.listFolderContents()[8].Title()
'withbetreff'

>>> theview.drop(withBetreff)
>>> self.portal.inbox.listFolderContents()[9].Title()
'withBetreff'If we have multiple subject / betreff / … in our mail, let’s take the
first Subject:>>> theview.drop('Subject: SUB\nBetreff: BET')
>>> self.portal.inbox.listFolderContents()[10].Title()
'SUB'We decode the subject header for presentation, let’s drop an encoded subject:>>> theview.drop('Subject: =?ISO-8859-15?Q?=FCld=F6m?=')
>>> self.portal.inbox.listFolderContents()[11].Title() == 'üldöm'
Truevim: set ft=rst tw=75 nocin nosi ai sw=4 ts=4 expandtab:ContributorsHans-Peter Locher, InQuant GmbHStefan Eletzhofer, InQuant GmbHDownload