Merge pull request #32 from jdanbrown/fix-header-casing

Parsing should ignore header casing
This commit is contained in:
Martin Rusev
2014-07-30 11:07:17 +03:00
2 changed files with 17 additions and 8 deletions

View File

@@ -132,21 +132,21 @@ def parse_email(raw_email):
parsed_email['sent_to'] = get_mail_addresses(email_message, 'to')
value_headers_keys = ['Subject', 'Date','Message-ID']
key_value_header_keys = ['Received-SPF',
'MIME-Version',
'X-Spam-Status',
'X-Spam-Score',
'Content-Type']
value_headers_keys = ['subject', 'date','message-id']
key_value_header_keys = ['received-spf',
'mime-version',
'x-spam-status',
'x-spam-score',
'content-type']
parsed_email['headers'] = []
for key, value in email_dict.iteritems():
if key in value_headers_keys:
if key.lower() in value_headers_keys:
valid_key_name = key.lower().replace('-', '_')
parsed_email[valid_key_name] = decode_mail_header(value)
if key in key_value_header_keys:
if key.lower() in key_value_header_keys:
parsed_email['headers'].append({'Name': key,
'Value': value})

View File

@@ -43,6 +43,15 @@ class TestParser(unittest.TestCase):
parsed_email = parse_email(raw_email)
self.assertEqual(u'Test email - no attachment', parsed_email.subject)
self.assertEqual(u'Tue, 30 Jul 2013 15:56:29 +0300', parsed_email.date)
self.assertEqual(u'<test0@example.com>', parsed_email.message_id)
def test_parse_email_ignores_header_casing(self):
self.assertEqual('one', parse_email('Message-ID: one').message_id)
self.assertEqual('one', parse_email('Message-Id: one').message_id)
self.assertEqual('one', parse_email('Message-id: one').message_id)
self.assertEqual('one', parse_email('message-id: one').message_id)
# TODO - Complete the test suite