我正在做一个项目,其中包括,我需要从我的google账户中读取电子邮件中的信息。我想出了一个可行的解决方案,但不知道是否有更简单的方法?
代码的第一部分是访问邮箱的标准。但我发出去是为了让你知道我做了什么才能让它开始工作。
SCOPES = 'https://www.googleapis.com/auth/gmail.modify'
CLIENT_SECRET ='A.json'
store =file.Storage('storage.json')
credz=store.get()
flags = tools.argparser.parse_args(args=[])
if not credz or credz.invalid:
flow = client.flow_from_clientsecrets(CLIENT_SECRET,SCOPES)
if flags:
credz = tools.run_flow(flow, store, flags)
GMAIL = build('gmail','v1',http=credz.authorize(Http()))
response = GMAIL.users().messages().list(userId='me',q='').execute()
messages = []
if 'messages' in response:
messages.extend(response['messages'])
print len(messages)
while 'nextPageToken' in response:
page_token = response['nextPageToken']
response = service.users().messages().list(userId='me', q=query,pageToken=page_token).execute()
messages.extend(response['messages'])
FromMeInd=0
for message in messages:
ReadMessage(GMAIL,'me',message['id'])我更感兴趣的是这个部分。还有其他方法可以更直接地使用python和gmail获取消息吗?我已经查看了api文档,但是没有任何更有效的方法来读取它。
def ReadMessage(service,userID,messID):
message = service.users().messages().get(userId=userID, id=messID,format='full').execute()
decoded=base64.urlsafe_b64decode(message['payload']['body']['data'].encode('ASCII'))
print decoded发布于 2016-12-08 23:32:08
您可以将主体作为raw,然后使用标准的Python 电子邮件模块解析它。
根据官方API:https://developers.google.com/gmail/api/v1/reference/users/messages/get
import email
message = service.users().messages().get(userId='me', 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)您将得到一个包含mime部分的payload的mime消息,例如纯文本、HTML、可引用的可打印、附件等。
https://stackoverflow.com/questions/34922074
复制相似问题