I am trying to read all the mails of a user using Gmail API filtering by inbox. But to read 16k+ mails it is taking around 2hrs. Is there any efficient way?
now = datetime.now()
timestamp = math.floor(datetime.timestamp(now))
count = 0
while True:
results = service.users().messages().list(maxResults=50,userId='me',q='in:inbox before:{}'.format(timestamp)).execute()
messages = results.get('messages')
EmailRecepit=[]
if messages==None:
break
for msg in messages:
print("Count",count)
count+=1
# Get the message from its id
txt = service.users().messages().get(userId='me', id=msg['id']).execute()
try:
# Get value of 'payload' from dictionary 'txt'
payload = txt['payload']
headers = payload['headers']
attachment = payload['parts']
for header in headers: # getting the Sender
if header['name'] == 'From':
msg_from = header['value']
name=sender_name(msg_from)#Sender Name Not email
for a in attachment:
if a.get('filename') != '' and len(a.get('filename')) != 0:
document = a.get('filename')
if count % 50==0:
timestamp = math.floor(datetime.timestamp(parser.parse(headers['Date']))
except socket.error as error:
pass
except:
pass