2011-11-08 3 views
2

정말 이상한 버그가 있습니다.mongodb에 이메일 저장

for emailid in item_ids: 
    resp, data = conn.fetch(emailid, "(RFC822)") 
    try: 
     db.emails.insert({'raw': data}) 

그래서 나는 oauth2.clients.imap을 사용하여 gmail에서 많은 데이터를 가져 왔습니다. Gmail에서 이메일을 가져온 후, 나는 그것을 mongodb에서 "원시"로 저장하기로 결정했습니다.

는 다음 내 스크립트의 다른 부분에서, 나는 같은 것을 할 : 나는 import email as email_module을했고, 나는에 변수에 대한 더 나은 용어 생각할 수있는 변수 이메일을 그림자

for i,j in enumerate(db.emails.find()): 
    raw_s = j['raw'][0][1] 
    email = email_module.message_from_string(raw_s) 
    if email.is_multipart(): 
     print get_cleaned_body(email) 

메모를 이메일 인스턴스를 보유하십시오.

지금 이상한이게 내 이메일 인스턴스 중 일부는 multipart입니다!

난 내 검색 코드로 수정하는 경우

:

for emailid in item_ids: 
    resp, data = conn.fetch(emailid, "(RFC822)") 
    try: 
     #db.emails.insert({'raw': data}) 
     e = email.message_from_string(data[0][1]) 
     print e.is_multipart() 

내가 몇 True의보고입니다.

나는 이것이 데이터를 mongodb에 저장하면 전자 메일을 올바르게 구문 분석 할 수없는 것을 망쳐 버릴 수 있다고 생각할 수 있습니다.

+0

mongo에서 데이터는 어떻게 생깁니 까? 아마도 multipart 이메일을받을 때 일반 텍스트가 아니지만 일반 텍스트로 mongo에 저장하고있을 것입니다. – werkshy

답변

3

는이 작업을 수행해야 밝혀 :

OID = db.emails.insert ({ '원시'bson.binary.Binary는 (데이터)}) 이진

절약 보장 원본 콘텐츠가 의 데이터는 변경되지 않습니다.

관련 문제