【发布时间】:2020-04-28 10:54:25
【问题描述】:
我正在尝试使用以下代码从 gmail 帐户中获取所有 未读 邮件
msgs = service.users().messages().list(userId='me',q='in:inbox is:unread').execute()
flag=1
while flag==1:
for i in range(0,len(msgs['messages'])):
message = service.users().messages().get(userId='me', id=msgs['messages'][i]['id']).execute()
print(message['snippet'])
if 'nextPageToken' in msgs.keys():
msgs = service.users().messages().list(userId='me',pageToken= msgs['nextPageToken']).execute()
else:
flag=0
以上代码的逻辑
API 返回 100 个消息 ID 和一个名为 nextPageToken 的下一页 ID。我们使用这个令牌来获取接下来的 100 个消息 ID,依此类推。如果没有下一页,它将没有令牌,因此我的最后 4 行代码检查它是否存在。如果不存在,则将标志设置为 0,while 循环完成。
问题
以上代码获取所有消息(READ 和 UNREAD)
尝试了其他方法
msgs = service.users().messages().list(userId='me',labelIds=['UNREAD']).execute()
和
msgs = service.users().messages().list(userId='me',q='in:inbox is:unread').execute()
可能的根本原因
我注意到如果未读消息 100,则它会拉取所有消息(READ+UNREAD)
我已经调查过this stackoverflow answer,但也没有用。
【问题讨论】:
标签: python python-3.x gmail gmail-api