Python Gmail API拉出纯文本电子邮件正文
我试图解码一封从特定来源发给我的电子邮件。电子邮件看起来像一个CSS框,包含我需要的信息。当我通过google提供的函数运行这个函数时,我得到的似乎是CSS编码,我无法提取我需要的信息,而content_type()是“text”。但是,如果我转发同一封电子邮件给自己,并对其运行相同的函数,我会得到“multipart”(多部分)形式的content_type(),并且我能够提取CSS正文的纯文本,并获取我需要的信息。我认为这是因为当我转发给自己时,它在顶部包含纯文本(显示转发信息)以及CSS正文 所以我的问题是,在我把邮件转发给我自己之后,我如何才能从CSS正文中提取相同的纯文本,而不把邮件转发给我自己?以下是我正在使用的函数:Python Gmail API拉出纯文本电子邮件正文,python,css,python-3.x,email,gmail-api,Python,Css,Python 3.x,Email,Gmail Api,我试图解码一封从特定来源发给我的电子邮件。电子邮件看起来像一个CSS框,包含我需要的信息。当我通过google提供的函数运行这个函数时,我得到的似乎是CSS编码,我无法提取我需要的信息,而content_type()是“text”。但是,如果我转发同一封电子邮件给自己,并对其运行相同的函数,我会得到“multipart”(多部分)形式的content_type(),并且我能够提取CSS正文的纯文本,并获取我需要的信息。我认为这是因为当我转发给自己时,它在顶部包含纯文本(显示转发信息)以及CSS正
def get_message(service, user_id, msg_id):
try:
# Makes the connection and GETS the emails in RAW format.
message = service.users().messages().get(userId=user_id, id=msg_id, format='raw').execute()
# Changes format from RAW to ASCII
msg_raw = base64.urlsafe_b64decode(message['raw'].encode('ASCII'))
# Changes format type again
msg_str = email.message_from_bytes(msg_raw)
# This line checks what the content is, if multipart (plaintext and html) or single part
content_types = msg_str.get_content_maintype()
print(content_types)
if content_types == 'multipart':
# Part1 is plaintext
part1, part2 = msg_str.get_payload()
raw_email = part1.get_payload()
remove_char = ["|", "=20", "=C2=A0"]
for i in remove_char:
raw_email = raw_email.replace(i, "")
raw_email = "".join([s for s in raw_email.strip().splitlines(True) if s.strip()])
return str(raw_email)
else:
return msg_str.get_payload()
except:
print('An error has occured during the get_message function.')
你所说的
是什么意思?我不可能提取我需要的信息
?你得到的是什么?另外,你能提供一个电子邮件示例来重现这一点吗?我的意思是,当我使用上面的函数来提取电子邮件正文数据时,如果我直接从源代码中解码,那么content_type()是文本,但它返回html/css数据。但是,当我将电子邮件转发给自己(将纯文本添加到电子邮件中),然后通过同样的功能运行它时,它将纯文本和HTML视为两个不同的部分,我可以指定只返回纯文本,然后我可以轻松提取我需要的信息。我想提取纯文本(显然在那里),而无需先将电子邮件转发给我自己。您能否提供尝试从原始邮件中提取文本时获得的html/css数据?您所说的是什么意思?我无法提取我需要的信息?你得到的是什么?另外,你能提供一个电子邮件示例来重现这一点吗?我的意思是,当我使用上面的函数来提取电子邮件正文数据时,如果我直接从源代码中解码,那么content_type()是文本,但它返回html/css数据。但是,当我将电子邮件转发给自己(将纯文本添加到电子邮件中),然后通过同样的功能运行它时,它将纯文本和HTML视为两个不同的部分,我可以指定只返回纯文本,然后我可以轻松提取我需要的信息。我想提取纯文本(显然在那里),而不需要先将电子邮件转发给我自己。您能提供您在试图从原始邮件中提取文本时获得的html/css数据吗?