Я столкнулся с действительно странной ошибкой.
for emailid in item_ids:
resp, data = conn.fetch(emailid, "(RFC822)")
try:
db.emails.insert({'raw': data})
Итак, я получаю кучу данных из gmail, используя oauth2.clients.imap.Получив письмо из gmail, я решил сохранить его как «raw» сначала в моем mongodb.
А затем в другой части моего скрипта я делаю что-то вроде этого:
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)
обратите внимание, что я сделал import email as email_module
и скрыл переменную электронную почту, так как не могу придумать лучшего термина для переменной, в которой будет храниться экземпляр электронной почты
Теперь странно, что нетиз моих экземпляров электронной почты являются составными!
Если я изменю свой код поиска так:
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 портит что-то, что не позволяет правильно анализировать электронную почту?