summaryrefslogtreecommitdiff
path: root/postgresqleu/mailqueue/admin.py
diff options
context:
space:
mode:
authorMagnus Hagander2016-09-30 12:05:41 +0000
committerMagnus Hagander2016-09-30 12:06:26 +0000
commit676069c5aa85cda799083de2812b654819c399b2 (patch)
tree378a5ae8232fe12bab165e93c0da5d632b35ac44 /postgresqleu/mailqueue/admin.py
parente4db5611cf281c3d232305171b51eadac2603599 (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.py27
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)