--- a/Allura/allura/lib/mail_util.py
+++ b/Allura/allura/lib/mail_util.py
@@ -11,9 +11,9 @@
from formencode import validators as fev
from pylons import c
-from allura.lib.helpers import push_config, find_project
from allura.lib.utils import ConfigProxy
from allura.lib import exceptions as exc
+from allura.lib import helpers as h
log = logging.getLogger(__name__)
@@ -29,10 +29,10 @@
(gmail barfs with encoded email addresses.)'''
if isinstance(text, header.Header):
return text
- h = header.Header('', charset)
+ hdr = header.Header('', charset)
for word in text.split(' '):
- h.append(word)
- return h
+ hdr.append(word)
+ return hdr
def parse_address(addr):
userpart, domain = addr.split('@')
@@ -41,12 +41,12 @@
raise exc.AddressException, 'Unknown domain: ' + domain
domain = domain[:-len(config.common_suffix)]
path = '/'.join(reversed(domain.split('.')))
- project, mount_point = find_project('/' + path)
+ project, mount_point = h.find_project('/' + path)
if project is None:
raise exc.AddressException, 'Unknown project: ' + domain
if len(mount_point) != 1:
raise exc.AddressException, 'Unknown tool: ' + domain
- with push_config(c, project=project):
+ with h.push_config(c, project=project):
app = project.app_instance(mount_point[0])
if not app:
raise exc.AddressException, 'Unknown tool: ' + domain
@@ -61,9 +61,13 @@
result = {}
result['multipart'] = multipart = msg.is_multipart()
result['headers'] = dict(msg)
- result['message_id'] = _parse_message_id(msg.get('Message-ID'))[0]
+ result['message_id'] = _parse_message_id(msg.get('Message-ID'))
result['in_reply_to'] = _parse_message_id(msg.get('In-Reply-To'))
result['references'] = _parse_message_id(msg.get('References'))
+ if result['message_id'] == []:
+ result['message_id'] = h.gen_message_id()
+ else:
+ result['message_id'] == result['message_id'][0]
if multipart:
result['parts'] = []
for part in msg.walk():
@@ -92,7 +96,7 @@
addr = M.EmailAddress.query.get(_id=M.EmailAddress.canonical(email_address))
if addr and addr.claimed_by_user_id:
return addr.claimed_by_user()
- addr = M.EmailAddress.query.get(_id=M.EmailAddress.canonical(headers.get('From')))
+ addr = M.EmailAddress.query.get(_id=M.EmailAddress.canonical(headers.get('From', '')))
if addr and addr.claimed_by_user_id:
return addr.claimed_by_user()
return M.User.anonymous()