How to install mailtoplone.base
- Download and install ActivePython
- Open Command Prompt
- Type
pypm install mailtoplone.base
Lastest release
mailtoplone.base
Overview
basic package for mailtoplone
Authors
Stefan 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"
Dependencies
Additional egg dependecies
icalendar python-dateutil
Contents
Content Types
InBox:
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, Cc
- body (prefers text/html parts over text/plain parts)
- attachments (download link)
Adapters
MailDropBox:
Basic adapter, providing a drop method generating an Email out of the dropped mailstring
BlogMailDropBox:
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 mailstring
Utilities
BaseDropBoxFactory:
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.
MarkerInterfaces
You 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 """
Scripts
dropemail:
File system python script, to drop a mail to an inbox(url), specify the mail as file or use stdin
vim: set ft=rst tw=75 nocin nosi ai sw=4 ts=4 expandtab:
Change history
Changelog
0.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 CHANGELOG
Detailed Documentation
mailtoplone.base
Setup TestEnvironment
Setting 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'
Adapter
Let'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 xmlrpcview
Let'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 title
We 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'
True
vim: set ft=rst tw=75 nocin nosi ai sw=4 ts=4 expandtab:
Contributors
Hans-Peter Locher, InQuant GmbH
Stefan Eletzhofer, InQuant GmbH