Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Gmail API拉出纯文本电子邮件正文_Python_Css_Python 3.x_Email_Gmail Api - Fatal编程技术网

Python Gmail API拉出纯文本电子邮件正文

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正

我试图解码一封从特定来源发给我的电子邮件。电子邮件看起来像一个CSS框,包含我需要的信息。当我通过google提供的函数运行这个函数时,我得到的似乎是CSS编码,我无法提取我需要的信息,而content_type()是“text”。但是,如果我转发同一封电子邮件给自己,并对其运行相同的函数,我会得到“multipart”(多部分)形式的content_type(),并且我能够提取CSS正文的纯文本,并获取我需要的信息。我认为这是因为当我转发给自己时,它在顶部包含纯文本(显示转发信息)以及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数据吗?