mailtoplone.base

HomePage: https://svn.plone.org/svn/collective/mailtoplone/mailtoplone.base

Author: Hans-Peter Locher

Download: https://pypi.python.org/packages/source/m/mailtoplone.base/mailtoplone.base-0.2.7.zip

        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.inb