2012-02-11 2 views
0

Я использую модуль imaplib для входа в свою учетную запись gmail и получения электронных писем. Это дает мне много информации, а также текст в/из/тему/текст. Согласно тип (msg) -ый возвращаемый объект является экземпляром.Применение регулярного выражения к экземпляру - по электронной почте

Мое регулярное выражение не работает, когда я применяю его к объекту msg, поскольку он ожидает строку, и это, очевидно, экземпляр, поэтому он не работает.

Пример регулярного выражения для определения даты, которая работает хорошо, когда я просто дать ему строку:

match = re.search(r"Time:\s(([0-2]\d):([0-5]\d))", text) # validates hour and minute in a 24 hour clock 

Так три вопроса: действительно
1.) я буду об этом правильном пути или там лучший способ сделать это?
2.) как я могу применить свое регулярное выражение к этой информации «экземпляра», чтобы я мог идентифицировать дату/время и т. Д.
3.) как я могу просто получить тело электронной почты?

result, data = mail.fetch(latest_email_id, "(RFC822)") 

raw_email = data[0][1] 

email_message = email.message_from_string(raw_email) 

msg = email.message_from_string(raw_email) 
msg.get_payload() 

Еще раз спасибо

+0

Instance какого типа? –

+0

Я не использовал imaplib немного, но экземпляр msg может быть преобразован в строку со строкой (msg) или имеет атрибуты для возврата сообщения msg – jdi

+0

Я новичок в python, но когда я делаю (msg), он возвращает ? Разве это не тип? – dannymilsom

ответ

0

Я думаю, что эта проблема может быть очень близко к другому вопросу я ответил: payload of an email in string format, python

Основной проблемой для другого человека, что get_payload() может возвращать которые необходимо проверить. Это не всегда строка.

Вот отрывок из другого вопроса о том, как обрабатывать объект, который вы получаете от get_payload():

if isinstance(payload, list): 
    for m in payload: 
     print str(m).split() 

else: 
    print str(m).split() 

Кроме того, вы можете проанализировать фактический расширенный разговор, который я имел с ФПОМ этого вопроса здесь: http://chat.stackoverflow.com/rooms/5963/discussion-between-jdi-and-puneet

+0

Я думаю, вы можете быть правы, но я действительно не понимаю, как решить проблему. Итак, как мне просто получить доступ к телу/из/тему и т. Д., Если msg - это многопользовательский объект? – dannymilsom

0

Оказывается, что тело электронной почты можно получить через полезную нагрузку [0], поскольку полезная нагрузка представляет собой список, в то время как переменная msg была экземпляром. Я тогда просто превратил его в строку с простой

payload = msg.get_payload() 
body = payload[0] 
str_body = str(body) 

Спасибо за вашу помощь снова

Смежные вопросы