我尝试使用Google使用Python 3.4提供的API来阅读我的GMail消息。
我正在使用Google在this链接提供的此功能:
def GetMimeMessage(service, user_id, msg_id):
try:
message = service.users().messages().get(userId=user_id, id=msg_id,
format='raw').execute()
print 'Message snippet: %s' % message['snippet']
msg_str = base64.urlsafe_b64decode(message['raw'].encode('ASCII'))
mime_msg = email.message_from_string(msg_str)
return mime_msg
except errors.HttpError, error:
print 'An error occurred: %s' % error
但是,如果我使用此功能,我会收到以下错误:
TypeError:initial_value必须是str或None,而不是bytes
所以我稍微改变了一下这个功能:
def GetMimeMessage(service, user_id, msg_id):
try:
message = service.users().messages().get(userId=user_id, id=msg_id,
format='raw').execute()
#print ('Message snippet: %s' % message['snippet'])
msg_str = base64.urlsafe_b64decode(message['raw'].encode('utf-8','ignore'))
print(msg_str)
mime_msg = email.message_from_string(msg_str.decode('utf-8','ignore'))
return mime_msg
except errors.HttpError:
print('An error occurred')
如果我没有添加'忽略'参数我得到以下错误:
UnicodeDecodeError:' utf-8'编解码器不能将字节0xeb解码到位 2214:无效的连续字节
如果我使用'忽略'参数然后邮件的内容,例如HTML文本,有一些奇怪的字符,例如:
= 09 = 09body = 2C#bodyTable = 2C#bodyCell {
= 09 = 09 = 09height:100%!important;
= 09 = 09 = 09margin:0;
= 09 = 09 = 09padding:0;
= 09 = 09 = 09width:100%!important;
= 09 = 09}
我的问题似乎与this one非常相似,但鉴于我不是Python专家而且我需要使用GMail API,我看不出如何修复它。 有什么想法吗?