2013-12-23 2 views
0

나는 this document을 통해 읽었습니다. 대부분의 문서는 이메일의 uid를 찾는 것에 기반합니다. 기사에서 :기존 파이썬 이메일 개체의 uid 찾는 방법

"The way this works is pretty simple: use the uid function, and pass in the string of the command in as the first argument. The rest behaves exactly the same. 

result, data = mail.uid('search', None, "ALL") # search and return uids instead 
latest_email_uid = data[0].split()[-1] 
result, data = mail.uid('fetch', latest_email_uid, '(RFC822)') 
raw_email = data[0][1] 

나는 이메일을 소비하는 목적있는 장고 응용 프로그램이라고 장고 사서함 (http://django-mailbox.readthedocs.org/en/latest/index.html)와 함께 일하고 있어요.

: 나는 장고의 검색어에서 레코드를 선택하고 이메일 목적으로 바꿀 수있는 파이썬 "이메일"라이브러리를 사용하여

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

:

앱처럼 보이는 "메시지"모델을 생성

qs = Message.objects.filter("my criteria") 
first = qs[0] 
one = first.get_email_object() // one is an email object 

db의 기존 데이터에 uid가 있습니까? 그렇다면 어떻게해야합니까?

+0

데이터베이스 정보를 이메일 개체로 "재구성"하는 방법은 무엇입니까? 리콜하는 데이터가 직렬화 된 데이터입니까 아니면 수동으로 구축하고 있습니까? – iandouglas

+0

자세한 내용은 업데이트 된 질문을 참조하십시오. – user61629

답변

1

귀하의 질문에 대한 엄격한 대답은 "아니오"입니다. 여러분이 인용 한 문서는 각 이메일 메시지의 고유 한 메시지 ID를 추적하는 서버에서 고유 한 ID (uid)를 확실히받는 IMAP 폴더 (이 경우 Gmail 계정)를 반복하는 것에 관한 것입니다.

장고를 사용하여 메일 메시지 개체를 구성하기 때문에 이러한 UID를 가지지 않습니다. django.db.models.fields.AutoField에서 가져온 "ID"필드는 귀하가 인용 한 Gmail/IMAP 웹 페이지가 말하는 "순치 않은 자동 증분 ID"입니다.

"uuid"라이브러리 (http://docs.python.org/2/library/uuid.html)를 사용하여 메시지의 고유 ID 값을 생성 할 수도 있지만 데이터베이스에도 저장하지 않으면 계속해서 다시 생성 할 수 있습니다.

빌드하려는 정보 (웹 기반 전자 메일 리더, 아마도?)에 대해 더 자세히 알고 싶다면 커뮤니티로서 더 좋은 아이디어를 얻을 수 있습니다.

+0

감사합니다. 이안, 나는 방금 imap과 python 전자 메일 라이브러리 작업 방식에 대해 머리를 터지기 시작했습니다. 그래서 매우 유용합니다. - 빌, 안부. – user61629