脚本:
> results = service.users().messages().list(userId='me', labelIds=['INBOX']).execute()
> messages = results.get('messages', [])
>
> if not messages:
> print("No messages found.")
> else:
> print("Message snippets:")
> for message in messages[::-1]:
> msg = service.users().messages().get(userId='me', id=message['id']).execute()
> print(msg['snippet'])
> messageid = msg['id']
> service.users().messages().delete(userId='me', id=messageid).execute()
> break
>
> if __name__ == '__main__':
> main()
嘿, 我希望该程序接收最早的电子邮件,将其打印出来,然后删除此消息。 但是,我不确定ID是什么,并且总是收到这样的错误:
Message snippets:
Google Banner Hallo Gmail, willkommen bei Google. Mit Ihrem neuen Konto können Sie Google-Produkte, ‑Apps und ‑Dienste nutzen. Für den Anfang haben wir hier einige nützliche Tipps für Sie
. Konto
Traceback (most recent call last):
File "gmail.py", line 52, in <module>
main()
File "gmail.py", line 48, in main
service.users().messages().delete(userId='me', id=messageid).execute()
File "C:\Users\25jul\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\googleapiclient\_helpers.py", line 134, in
positional_wrapper
return wrapped(*args, **kwargs)
File "C:\Users\25jul\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\googleapiclient\http.py", line 907, in exe
cute
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/gmail/v1/users/me/messages/171f0100542b03d1? returned "Insufficient Permission">
感谢您的回答, 朱利叶斯
答案 0 :(得分:0)
考虑到您遇到的错误Insufficient Permission
,您很可能没有提供必要的范围。
要呼叫Users.messages: delete,您必须使用以下范围: https://mail.google.com/
您正在进行的其他调用(list
和get
)的限制较少,并且接受了其他范围。这就是为什么您在尝试删除邮件时会收到错误消息的原因。
message ID
的问题(您正在成功检索它),也不需要messageid = msg['id']
(您之前使用过message['id']
,但可以再次使用) 。