При вызове API GMail в корзину возвращается «Недопустимое значение идентификатора» - PullRequest
0 голосов
/ 27 сентября 2018

Новичок здесь пытается удалить электронную почту из входящих сообщений с помощью API-интерфейса GMail Python.Вот что у меня есть:

 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)  

Я могу подтвердить, что у меня в почтовом ящике несколько писем от 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.У меня вопрос, как мне представить это, чтобы это действительное значение идентификатора?

Спасибо

1 Ответ

0 голосов
/ 02 октября 2018

Похоже, что вы пытаетесь использовать запрос, чтобы определить, какие сообщения удалять, а не фактический идентификатор сообщения.

Я хотел бы изучить использование метода DelMessagesMatchingQuery из библиотеки API Gmail.

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...