python - 如何使用 Python 3 阅读电子邮件

标签 python email decode imaplib

现在我在这里

 import imaplib
 mail = imaplib.IMAP4_SSL('imap.gmail.com')
 mail.login('login@gmail.com', 'password')
 mail.list()
 # Out: list of "folders" aka labels in gmail.
 mail.select("inbox") # connect to inbox.
 #Get an email
 result, data = mail.uid('fetch', b'1', '(RFC822)')
    raw_email = data[0][1]
    email_message = email.message_from_bytes(raw_email)
    maintype = email_message.get_content_maintype()
    #HERE COMES TROUBLES - if hmtl will be base64 string
    if maintype == 'multipart':
        for part in email_message.get_payload():
            print(part.get_content_maintype())
            if part.get_content_maintype() == 'text':
                html = str(part.get_payload())
    elif maintype == 'text':
        html = str(email_message.get_payload())

    #Now I Can parse HTML
    if html is not None:
        soup = BeautifulSoup(html, 'html.parser')

有些字母带有 base64 编码。如何解码?
base64.b64encode(some_string) - 没有帮助

最佳答案

import email

raw_email = data[0][1]
email_message = email.message_from_string(raw_email)

print email_message['To']

print email.utils.parseaddr(email_message['From']) # for parsing "Yuji Tomita" <yuji@grovemade.com>

print email_message.items() # print all headers


def get_first_text_block(self, email_message_instance):
maintype = email_message_instance.get_content_maintype()
if maintype == 'multipart':
    for part in email_message_instance.get_payload():
        if part.get_content_maintype() == 'text':
            return part.get_payload()
elif maintype == 'text':
    return email_message_instance.get_payload()

**这不是我写的,摘自https://yuji.wordpress.com/2011/06/22/python-imaplib-imap-example-with-gmail/

关于python - 如何使用 Python 3 阅读电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31703739/

相关文章:

python - 如何使用 python/Django 更新 MySQL 中的多行(CASE、WHEN、THEN)

python - 在 Python 中使用 BeautifulSoup 从 HTML 中删除回车符

c++ - OpenGL GL_LINE_STRIP 在 glEnd 之后给出错误 1281(无效值)

python - 通过 Python 2.6 发送电子邮件 (Gmail) 时出错

jquery - 如何在 jQuery 中验证纬度和经度以及电子邮件地址

c# - System.FormatException : 'Invalid length for a Base-64 char array or string.'

java - 使用 Base64 编码字符串的 XML 到 PDF

python - PyQt4 - 将 slider 的范围链接到绘图轴的范围

android - 在 Android 上使用 Verizon Motorola Droid 以编程方式将 SMS 发送到电子邮件

android - Android Studio Kotlin:BitmapFactory.decodeStream()返回null