Newb在这里试图使用GMail Python API从收件箱中丢弃电子邮件。这是我所拥有的:
24 try:
25 service.users().messages().trash(userId='me', id='from:johndoe@umich.edu').execute()
26 print ("Message with id: %s deleted successfully", msg_id)
27 except errors.HttpError, error:
28 print ("An error occurred: %s." % error)
我可以确认我的收件箱中有几封来自使用 Web 界面 johndoe@umich.edu 的电子邮件,但是当我尝试运行 python 脚本时,我得到:
Checking : <googleapiclient.discovery.Resource object at 0x7f04f2e93b50>
An error occurred: <HttpError 400 when requesting https://www.googleapis.com/gmail/v1/users/me/messages/from%3Ajohndoe%40umich.edu/trash?alt=json returned "Invalid id value">.
我接受它,id='from:johndoe@umich.edu'不是有效的ID值。 我的问题是我如何表示它,使其成为有效的 id 值?
谢谢
看起来您正在尝试使用查询来确定要删除的消息,而不是实际的消息 ID。
我会研究使用Gmail API库中的DelMessagesMatchingQuery方法。
def DelMessagesMatchingQuery(service, user_id, query=''):
try:
response = service.users().messages().list(userId=user_id,
q=query).execute()
messages = []
if 'messages' in response:
messages.extend(response['messages'])
while 'nextPageToken' in response:
page_token = response['nextPageToken']
response = service.users().messages().list(userId=user_id,
q=query, pageToken=page_token).execute()
messages.extend(response['messages'])
else:
for message in messages:
message_id = message['id']
delresponse = service.users().messages().trash(userId=user_id, id=message_id).execute()
print(delresponse)
return messages
except errors.HttpError as error:
print('An error occurred: %s' % error)
然后,您可以在调用函数时定义查询字符串
query = 'from:johndoe@umich.edu'
print(DelMessagesMatchingQuery(service, user_id, query))
id 值位于电子邮件的邮件 ID 中: 在此处输入图像描述
您也可以在Gmail中看到此代码,并带有"查看原始邮件"选项。