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:
parent
137c2f88f9
commit
0d8be13807
1 changed files with 16 additions and 7 deletions
|
@ -24,7 +24,7 @@ $Id$
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import email
|
import email, email.Header
|
||||||
from logging import getLogger
|
from logging import getLogger
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
|
@ -84,13 +84,13 @@ class IMAPCollectionProvider(object):
|
||||||
resourceType = loopsRoot.getConceptManager()['email']
|
resourceType = loopsRoot.getConceptManager()['email']
|
||||||
for addr in addresses:
|
for addr in addresses:
|
||||||
msg = client._collectedObjects[addr]
|
msg = client._collectedObjects[addr]
|
||||||
title = msg['Subject']
|
title = decodeHeader(msg['Subject'])
|
||||||
sender = msg['From']
|
sender = decodeHeader(msg['From'])
|
||||||
receiver = msg['To']
|
receiver = decodeHeader(msg['To'])
|
||||||
raw_date = msg['Date'].rsplit(' ', 1)[0]
|
#raw_date = msg['Date'].rsplit(' ', 1)[0]
|
||||||
fmt = '%a, %d %b %Y %H:%M:%S'
|
#fmt = '%a, %d %b %Y %H:%M:%S'
|
||||||
#date = datetime(*(time.strptime(raw_date, fmt)[0:6]))
|
#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)
|
parts = getPayload(msg)
|
||||||
if 'html' in parts:
|
if 'html' in parts:
|
||||||
text = '<br /><br /><hr /><br /><br />'.join(parts['html'])
|
text = '<br /><br /><hr /><br /><br />'.join(parts['html'])
|
||||||
|
@ -115,6 +115,15 @@ class IMAPCollectionProvider(object):
|
||||||
yield obj
|
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):
|
def getPayload(msg):
|
||||||
parts = {}
|
parts = {}
|
||||||
for msg in msg.walk():
|
for msg in msg.walk():
|
||||||
|
|
Loading…
Add table
Reference in a new issue