将消息对象转换为字符串(Gmail api和python)
我试图使用python只保存电子邮件的特定部分。我有变量服务、userId和msg_id,但我不知道如何将变量明文转换为字符串,以便在get_info函数中扮演我想要的角色将消息对象转换为字符串(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_
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()
致:
我希望这对你有帮助
参考资料:
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()
将消息正文作为字符串。