Commit 65dea6ad authored by Kevin Deldycke's avatar Kevin Deldycke

Support of Base64 encoded-bodies with extra support of Base32 and Base16 if python 2.4 is present.

Update indention.


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@5948 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 740d21c6
##############################################################################
#
# Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
# Copyright (c) 2002-2006 Nexedi SARL and Contributors. All Rights Reserved.
# Jean-Paul Smets-Solanes <jp@nexedi.com>
# Kevin Deldycke <kevin@nexedi.com>
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsability of assessing all potential
......@@ -39,6 +40,22 @@ import smtplib
from zLOG import LOG
# API of base64 has changed between python v2.3 and v2.4
import base64
global supported_encoding
supported_encoding = {}
try:
# python v2.4 API
supported_encoding = { 'base64': base64.b64decode
, 'base32': base64.b32decode
, 'base16': base64.b16decode
}
except AttributeError:
# python v2.3 API
supported_encoding = { 'base64': base64.decodestring
}
class MailMessage(XMLObject, Event, CMFMailInMessage):
"""
MailMessage subclasses Event objects to implement Email Events.
......@@ -64,19 +81,27 @@ class MailMessage(XMLObject, Event, CMFMailInMessage):
)
def __init__(self, *args, **kw):
attachments = kw.get('attachments', {})
if kw.has_key('attachments'):
del kw['attachments']
XMLObject.__init__(self, *args, **kw)
self.attachments = attachments
def _edit(self, *args, **kw):
LOG('MailMessage._edit', 0, str(kw))
# LOG('MailMessage._edit', 0, str(kw))
self._cleanIncomingMessage(**kw)
XMLObject._edit(self, *args, **kw)
self.attachments = attachments
def _cleanIncomingMessage(**kw):
# Delete attachments
attachments = kw.get('attachments', {})
if kw.has_key('attachments'):
del kw['attachments']
XMLObject._edit(self, *args, **kw)
self.attachments = attachments
# Decode MIME base64/32/16 data
if kw.has_key('header') and kw['header'].has_key('content-transfer-encoding'):
content_encoding = kw['header']['content-transfer-encoding']
if content_encoding in supported_encoding.keys():
method = supported_encoding[content_encoding]
kw['body'] = method(kw['body'])
del kw['header']['content-transfer-encoding']
def send(self, from_url=None, to_url=None, msg=None, subject=None):
"""
......@@ -114,4 +139,3 @@ class MailMessage(XMLObject, Event, CMFMailInMessage):
if reply_subject.find('Re: ')!=0:
reply_subject = 'Re: ' + reply_subject
return reply_subject
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment