· 5 years ago · Aug 23, 2020, 05:58 PM
1import base64
2from googleapiclient.discovery import build
3from httplib2 import Http
4from oauth2client import file, client, tools
5
6SCOPES = 'https://www.googleapis.com/auth/gmail.readonly'
7
8
9def main():
10 store = file.Storage('token.json')
11 creds = store.get()
12 if not creds or creds.invalid:
13 flow = client.flow_from_clientsecrets('credentials.json', SCOPES)
14 creds = tools.run_flow(flow, store)
15 service = build('gmail', 'v1', http=creds.authorize(Http()))
16
17 # Call the Gmail API to fetch INBOX
18 results = service.users().messages().list(userId='me', labelIds=['INBOX']).execute()
19 messages = results.get('messages', []) # get message ids
20
21 if not messages:
22 print("No messages found.")
23 else:
24 print(len(messages))
25 for message in messages[:2]:
26 msg = service.users().messages().get(userId='me', id=message['id'], format="full").execute() # get full email content
27 headers_list = msg['payload']['headers'] # get the headers
28 for header in headers_list:
29 for key, value in header.items():
30 if value == 'Your Steam account: Access from new computer': # I want to just get this particular mail
31 print(parse_msg(msg))
32
33
34def parse_msg(msg): # returns the data of mail, but steam mail data is always none, so it returns the snippet, which is also none
35 if msg.get("payload").get("body").get("data"):
36 return base64.urlsafe_b64decode(msg.get("payload").get("body").encode("ASCII")).decode("utf-8")
37 return msg.get("snippet")