Текст сообщения электронной почты? - PullRequest
2 голосов
/ 04 ноября 2011

Привет всем Я использую сценарий, который включает в себя:

import oauth2 as oauth
import oauth2.clients.imap as imaplib
import email
conn = imaplib.IMAP4_SSL('imap.googlemail.com')
conn.debug = 4 

# This is the only thing in the API for impaplib.IMAP4_SSL that has 
# changed. You now authenticate with the URL, consumer, and token.
conn.authenticate(url, consumer, token)

# Once authenticated everything from the impalib.IMAP4_SSL class will 
# work as per usual without any modification to your code.
conn.select('[Gmail]/All Mail')

response, item_ids = conn.search(None, "SINCE", "01-Jan-2011")
item_ids = item_ids[0].split()

# Now iterate through this shit and retrieve all the email while parsing
# and storing into your whatever db.

for emailid in item_ids:
    resp, data = conn.fetch(emailid, "(RFC822)") 
    email_body = data[0][1] 
    mail = email.message_from_string(email_body) 

Моя текущая проблема заключается в том, что я не могу получить тело экземпляра mail. Я могу увидеть содержимое письма, напечатав его или mail.as_string (), но даже с помощью mail.keys () и mail.values ​​() я на самом деле не могу увидеть содержимое письма (основное сообщение).

Что не так с этим почтовым lib API? (точнее что я делаю не так)?

1 Ответ

4 голосов
/ 04 ноября 2011

С email документы :

Вы можете передать парсеру строку или объект файла, и парсер вернуть вам корневой экземпляр сообщения структуры объекта.

Для простых сообщений не MIME полезная нагрузка этого корневого объекта будет скорее всего, строка, содержащая текст сообщения. Для MIME сообщения, корневой объект будет возвращать True из своего is_multipart () метод, и к частям можно получить доступ через get_payload () и методы ходьбы ().

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...