correctly decode headers

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3701 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2010-01-31 14:54:31 +00:00
parent 137c2f88f9
commit 0d8be13807

View file

@ -24,7 +24,7 @@ $Id$
"""
from datetime import datetime
import email
import email, email.Header
from logging import getLogger
import os
import time
@ -84,13 +84,13 @@ class IMAPCollectionProvider(object):
resourceType = loopsRoot.getConceptManager()['email']
for addr in addresses:
msg = client._collectedObjects[addr]
title = msg['Subject']
sender = msg['From']
receiver = msg['To']
raw_date = msg['Date'].rsplit(' ', 1)[0]
fmt = '%a, %d %b %Y %H:%M:%S'
title = decodeHeader(msg['Subject'])
sender = decodeHeader(msg['From'])
receiver = decodeHeader(msg['To'])
#raw_date = msg['Date'].rsplit(' ', 1)[0]
#fmt = '%a, %d %b %Y %H:%M:%S'
#date = datetime(*(time.strptime(raw_date, fmt)[0:6]))
date = datetime(*(email.Utils.parsedate(raw_date)[0:6]))
date = datetime(*(email.Utils.parsedate(msg['Date'])[0:6]))
parts = getPayload(msg)
if 'html' in parts:
text = '<br /><br /><hr /><br /><br />'.join(parts['html'])
@ -115,6 +115,15 @@ class IMAPCollectionProvider(object):
yield obj
def decodeHeader(h):
result = []
for v, dec in email.Header.decode_header(h):
if dec:
v = v.decode(dec)
result.append(v)
return ''.join(result)
def getPayload(msg):
parts = {}
for msg in msg.walk():