/ / Estrazione del messaggio da django queryset - python, django

Estrarre il messaggio da django queryset - python, django

Sto lavorando con un'applicazione django chiamata django-mailbox (http://django-mailbox.readthedocs.org/en/latest/index.html) il cui scopo è quello di consumare e-mail.

L'app crea un modello "Messaggio" che assomiglia a:

u"django_mailbox.message": {
"Meta": {"object_name": "Message"},
"body": ("django.db.models.fields.TextField", [], {}),
"encoded": ("django.db.models.fields.BooleanField", [], {"default": "False"}),
"from_header": ("django.db.models.fields.CharField", [], {"max_length": "255"}),
u"id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}),
"in_reply_to": ("django.db.models.fields.related.ForeignKey", [], {"blank": "True", "related_name": ""replies"", "null": "True", "to": u"orm["django_mailbox.Message"]"}),
"mailbox": ("django.db.models.fields.related.ForeignKey", [], {"related_name": ""messages"", "to": u"orm["django_mailbox.Mailbox"]"}),
"message_id": ("django.db.models.fields.CharField", [], {"max_length": "255"}),
"outgoing": ("django.db.models.fields.BooleanField", [], {"default": "False"}),
"processed": ("django.db.models.fields.DateTimeField", [], {"auto_now_add": "True", "blank": "True"}),
"read": ("django.db.models.fields.DateTimeField", [], {"default": "None", "null": "True", "blank": "True"}),
"subject": ("django.db.models.fields.CharField", [], {"max_length": "255"}),
"to_header": ("django.db.models.fields.TextField", [], {})

Sto cercando di estrarre il testo dell'email da vari messaggi. Utilizzando l'API del database in I ho eseguito quanto segue:

>>> from django_mailbox.models import Message
>>> o = Message.objects.filter(in_reply_to_id__gt=0)
>>> n = o.values("body")
>>> n
[{"body": u"RGVsaXZlcmVkLVRvOiByb2JiaW5zYWxpc0BnbWFpbC5jb20KUmVjZWl2.......

Ovviamente il corpo è codificato in qualche modo. Come posso decodificarlo e trovare il testo reale nelle e-mail?

risposte:

2 per risposta № 1

Secondo i documenti:

I corpi dei messaggi di posta elettronica sono codificati in base 64 quando vengono archiviati nel database.

Quindi puoi ottenere il contenuto del messaggio chiamando base64.b64decode dal base64 modulo.

Il testo e-mail che hai menzionato finora è:

>>> s = "RGVsaXZlcmVkLVRvOiByb2JiaW5zYWxpc0BnbWFpbC5jb20KUmVjZWl2"
>>> import base64
>>> base64.b64decode(s)
"Delivered-To: <some email address>nReceiv"

Ho rimosso l'indirizzo e-mail dall'output decodificato in modo che non sia incluso nei risultati di ricerca.