在Windows OS
上使用Python 2.7
和Gmail
-尝试获取和读取电子邮件的正文。
# 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"
来获取纯文本。
我搜索了这个论坛,试图理解现有的帖子,但无法找出我的代码中缺少的内容。
任何提示或指针将是有益的-提前感谢!
1条答案
按热度按时间xu3bshqb1#
尝试使用
msg.get_payload()
而不是msg.get_payload(decode=True).decode()
。get_payload()
方法应该返回纯文本内容,而不需要额外的解码。如果这不起作用,但
text/html
提供了html,那么也许可以使用python的内置html
库来提取它。应该可以