diff options
author | Magnus Hagander | 2016-09-30 12:05:41 +0000 |
---|---|---|
committer | Magnus Hagander | 2016-09-30 12:06:26 +0000 |
commit | 676069c5aa85cda799083de2812b654819c399b2 (patch) | |
tree | 378a5ae8232fe12bab165e93c0da5d632b35ac44 /postgresqleu/mailqueue/admin.py | |
parent | e4db5611cf281c3d232305171b51eadac2603599 (diff) |
Attempt to decode emails in hte queue
We only do very simple decoding, but even at this level it helps
a lot with debugging messages going out of the system.
Diffstat (limited to 'postgresqleu/mailqueue/admin.py')
-rw-r--r-- | postgresqleu/mailqueue/admin.py | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/postgresqleu/mailqueue/admin.py b/postgresqleu/mailqueue/admin.py index ccabb813..50ddc9e3 100644 --- a/postgresqleu/mailqueue/admin.py +++ b/postgresqleu/mailqueue/admin.py @@ -1,5 +1,30 @@ from django.contrib import admin +from email.parser import Parser + from models import QueuedMail -admin.site.register(QueuedMail) +class QueuedMailAdmin(admin.ModelAdmin): + model = QueuedMail + readonly_fields = ('parsed_content', ) + + def parsed_content(self, obj): + # We only try to parse the *first* piece, because we assume + # all our emails are trivial. + try: + parser = Parser() + msg = parser.parsestr(obj.fullmsg) + b = msg.get_payload(decode=True) + if b: return b + + pl = msg.get_payload() + for p in pl: + b = p.get_payload(decode=True) + if b: return b + return "Could not find body" + except Exception, e: + return "Failed to get body: %s" % e + + parsed_content.short_description = 'Parsed mail' + +admin.site.register(QueuedMail, QueuedMailAdmin) |