将消息对象转换为字符串(Gmail api和python)

将消息对象转换为字符串(Gmail api和python),python,gmail-api,tostring,Python,Gmail Api,Tostring,我试图使用python只保存电子邮件的特定部分。我有变量服务、userId和msg_id,但我不知道如何将变量明文转换为字符串,以便在get_info函数中扮演我想要的角色 def get_message(service, user_id, msg_id): try: #get the message in raw format message = service.users().messages().get(userId=user_id, id=msg_

我试图使用python只保存电子邮件的特定部分。我有变量服务、userId和msg_id,但我不知道如何将变量明文转换为字符串,以便在get_info函数中扮演我想要的角色

def get_message(service, user_id, msg_id):
    try:
        #get the message in raw format
        message = service.users().messages().get(userId=user_id, id=msg_id, format='raw').execute()
        
        #encode the message in ASCII format
        msg_str = base64.urlsafe_b64decode(message['raw'].encode("ASCII")).decode("ASCII")
        #put it in an email object
        mime_msg = email.message_from_string(msg_str)
        #get the plain and html text from the payload
        plainText, htmlText = mime_msg.get_payload()
            
        print(get_info(plainText, "start", "finish"))
    except Exception as error:
        print('An error occurred in the get_message function: %s' % error)

def get_info(plainText, start, end):    
    
    usefullText = plainText.split(start)[2]
    usefullText = usefullText.split(end)[0]
    return usefullText
    
运行代码后,我收到以下错误消息:

get_message函数中出现错误:“message”对象没有属性“split”

答案: 该类不存在方法
get\u payload()
。您需要使用
作为字符串()

代码修复:
try
块中的代码需要从以下位置更新:

#get the plain and html text from the payload
plainText, htmlText = mime_msg.get_payload()
致:

我希望这对你有帮助

参考资料:
答案: 该类不存在方法
get\u payload()
。您需要使用
作为字符串()

代码修复:
try
块中的代码需要从以下位置更新:

#get the plain and html text from the payload
plainText, htmlText = mime_msg.get_payload()
致:

我希望这对你有帮助

参考资料:

我找不到where is function
email.message\u from\u string(msg\u str)
,但最有可能的是
mime\u msg.get\u payload()
不会检索纯文本,而是对象消息我添加了这两个导入:import email import base64您可以检查
打印(类型(纯文本))
查看您拥有的对象类型,然后您可以查找文档并阅读有关其方法和属性的更多信息。您还可以使用
print(dir(plainText))
查看哪些方法具有此对象-可能有
plainText.text
plainText.body
或类似的方法从消息中获取原始文本。您也可以尝试
帮助(纯文本)
。如果您使用一些
IDE
(如
PyCharm
),那么您可以尝试
纯文本。
(末尾有点)并可能按Ctrl+Space来获取有关此对象中方法的信息。如果它在文档中,您可以看到它有
as_string()
get_body()
,等等。它还有
\u str
因此您可以使用
str(纯文本)
但这可能会为您提供包含所有元素的字符串-标题、正文、附件。请尝试
纯文本。get_content()
以字符串形式获取邮件正文。我无法从何处找到函数
email.message_from_string(msg_str)
,但很可能是
mime_msg.get_payload()
不会检索纯文本,但对象消息我添加了这两个导入:导入电子邮件导入base64您可以检查
打印(类型(纯文本))
查看您拥有的对象类型,然后您可以查找文档并阅读有关其方法和属性的更多信息。您还可以使用
print(dir(plainText))
查看哪些方法具有此对象-可能有
plainText.text
plainText.body
或类似的方法从消息中获取原始文本。您也可以尝试
帮助(纯文本)
。如果您使用一些
IDE
(如
PyCharm
),那么您可以尝试
纯文本。
(末尾有点)并可能按Ctrl+Space来获取有关此对象中方法的信息。如果它在文档中,您可以看到它有
as_string()
get_body()
,等等。它还有
\u str
因此您可以使用
str(纯文本)
但这可能会为您提供包含所有元素的字符串-标题、正文、附件。请尝试
纯文本。get_content()
将消息正文作为字符串。