python 获取/读取电子邮件并输出纯文本

np8igboo  于 2023-04-10  发布在  Python
关注(0)|答案(1)|浏览(183)

Windows OS上使用Python 2.7Gmail-尝试获取和读取电子邮件的正文。

# Parse the email message
msg = email.message_from_string(msg_data[0][1].decode('UTF-8'))

# Extract the "FROM" field
from_field = msg['FROM']

# Extract the received timestamp
received_timestamp = msg['Date']

msg_body = None
# Extract the body of the email
if msg.is_multipart():
    for part in msg.walk():
        # if part.get_content_type() == 'text/html':
        if part.get_content_type() == 'text/plain':
            msg_body = part.get_payload(decode=True).decode()
            break
else:
    msg_body = msg.get_payload(decode=True).decode()

# Print the results
print('FROM: {}'.format(from_field))
print('Received: {}'.format(received_timestamp))
print('Body:\n{}'.format(msg_body))

我能够打印"from_field""received_timestamp"变量-所以我知道它击中了正确的电子邮件/消息ID。
我尝试了"text/html"-这给了我很好的HTML格式的电子邮件(但我希望它在纯文本),我尝试了"text/plain"这给了我"None"
我想我不必使用"beautifulsoup""re"来获取纯文本。
我搜索了这个论坛,试图理解现有的帖子,但无法找出我的代码中缺少的内容。
任何提示或指针将是有益的-提前感谢!

xu3bshqb

xu3bshqb1#

尝试使用msg.get_payload()而不是msg.get_payload(decode=True).decode()get_payload()方法应该返回纯文本内容,而不需要额外的解码。
如果这不起作用,但text/html提供了html,那么也许可以使用python的内置html库来提取它。

html_body = part.get_payload(decode=True).decode()
            msg_body = html.unescape(html_body).replace('\r', '').replace('\n', ' ')

应该可以

相关问题