大家好我使用的脚本涉及:
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(),我实际上也无法看到邮件的内容(主要消息)。 / p>
此电子邮件lib API有什么问题? (或者说我做错了什么)?
答案 0 :(得分:4)
来自email
docs:
您可以将解析器传递给字符串或文件对象,解析器也可以 返回对象结构的根Message实例。
对于简单的非MIME消息,此根对象的有效负载将为 可能是包含消息文本的字符串。对于MIME 消息,根对象将从其is_multipart()返回True 方法,子部分可以通过get_payload()和 walk()方法。
因此请使用get_payload()
或如果邮件是多部分,请调用walk()
方法,然后在所需的子部分上使用get_payload()
。