| |
---|
| | from __future__ import absolute_import, unicode_literals |
---|
| | |
---|
| | import json |
---|
| | |
---|
| | from email.Header import decode_header |
---|
| | from email.parser import Parser as EmailParser |
---|
| | from email.parser import HeaderParser |
---|
| | |
---|
| | from django.http import HttpResponse, Http404 |
---|
| |
---|
| | |
---|
| | def parse(message): |
---|
| | msgobj = EmailParser().parsestr(message) |
---|
| | header_parser = HeaderParser() |
---|
| | if msgobj['Subject'] is not None: |
---|
| | decodefrag = decode_header(msgobj['Subject']) |
---|
| | subj_fragments = [] |
---|
| | for s, enc in decodefrag: |
---|
| | if enc: |
---|
| | s = unicode(s, enc).encode('utf8', 'replace') |
---|
| | subj_fragments.append(s) |
---|
| | subject = ''.join(subj_fragments) |
---|
| | else: |
---|
| | subject = None |
---|
| | |
---|
| | headers = [] |
---|
| | headers_dict = header_parser.parsestr(message) |
---|
| | for key in headers_dict.keys(): |
---|
| | headers += ['{}: {}'.format(key, headers_dict[key])] |
---|
| | content = Scrubber(msgobj).scrub()[0] |
---|
| | return { |
---|
| | 'subject': subject, |
---|
| | 'body': content, |
---|
| | 'headers': '\n'.join(headers), |
---|
| | } |
---|
| | |
---|
| |
---|
| | if 'raw' in request.GET: |
---|
| | return HttpResponse(held_message.msg, content_type='text/plain') |
---|
| | response_data = dict() |
---|
| | response_data['sender'] = held_message.sender |
---|
| | response_data['subject'] = held_message.subject |
---|
| | response_data['reason'] = held_message.reason |
---|
| | response_data['hold_date'] = held_message.hold_date |
---|
| | response_data['msg'] = parse(held_message.msg) |
---|
| | response_data['msgid'] = held_message.request_id |
---|
| |
---|
| | |