2013-11-21 39 views
0

我正在使用名爲django-mailbox(http://django-mailbox.readthedocs.org/en/latest/index.html)的django應用程序,其目的是消費電子郵件。從Django查詢集中提取郵件

該應用程序創建一個「消息」的模式,看起來像:

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', [], {}) 

我試圖從各種消息的電子郵件文本。使用數據庫API中我已經運行以下內容:

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

很明顯,身體編碼以某種方式。我怎樣才能解碼並找到電子郵件中的實際文字?

回答

2

根據該文檔:

電子郵件消息體是鹼-64存儲在數據庫中時編碼。

因此,您可以從base64模塊中調用base64.b64decode來獲取消息內容。

,您已經提到迄今已是電子郵件正文:

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

我已刪除從解碼輸出的E-mail地址,所以它不會在搜索結果中包括在內。