Decode emails in the queue
authorMagnus Hagander <magnus@hagander.net>
Thu, 25 May 2017 13:29:38 +0000 (09:29 -0400)
committerMagnus Hagander <magnus@hagander.net>
Thu, 25 May 2017 13:29:38 +0000 (09:29 -0400)
Makes it easier to do debugging. Patch copied over from the pgeu
repository.

hamnadmin/hamnadmin/mailqueue/admin.py

index ccabb813485d5650f97f0c68c1f314699053895e..50ddc9e3200b9ff043e20cbb518a4f1e8ec1365c 100644 (file)
@@ -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)