Можно ли получить первые сообщения электронной почты, отправленные двумя пользователями, в мой почтовый ящик с помощью API Gmail? Мой код получает для одного пользователя первое электронное письмо мне - PullRequest
0 голосов
/ 16 января 2019

Этот код получает первое сообщение от конкретного пользователя в Gmail с использованием API Gmail.

Как получить два конкретных пользователя первым сообщением в моем gmail, используя gmail-api Могу ли я использовать здесь операторы if else?

from googleapiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
import time

SCOPES = 'https://www.googleapis.com/auth/gmail.readonly'

def main():

    store = file.Storage('token.json')
    creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('credentials.json', SCOPES)
    creds = tools.run_flow(flow, store)
service = build('gmail', 'v1', http=creds.authorize(Http()))

# Call the Gmail API to fetch INBOX
#results = service.users().messages().list(userId='me',maxResults=10,labelIds = ['INBOX']).execute()
results = service.users().messages().list(userId='me', q='googlecommunityteam-noreply@google.com',labelIds = ['INBOX']).execute()

messages = results.get('messages', [])



if not messages:
    print ("\nGmail: \n No gmail mails found.\n")
else:
    print ("Gmail:\n")

    msg = service.users().messages().get(userId='me', id=messages[0]['id']).execute()
    print(msg['snippet'])
    print(msg['internalDate'])




if __name__ == '__main__':
    main()

1 Ответ

0 голосов
/ 16 января 2019

Параметр Q в поиске Gmail работает точно так же, как поиск на веб-сайте Gmail, поэтому, если вы заходите в gmail и нажимаете стрелку справа в окне поиска. Up выскочит поисковик

enter image description here

Вы можете поэкспериментировать с этим и вызвать любой тип поиска, который хотите

from:(Test@gmail.com) to:(me@gmail.com)

Затем вы можете взять это и сбросить его непосредственно в q в вашем запросе

results = service.users().messages().list(userId='me', q='from:(Test@gmail.com) to:(me@gmail.com)',labelIds = ['INBOX']).execute()

Теперь, несмотря на все сказанное, я поиграл с ним и не смог заставить его возвращать электронные письма от двух разных пользователей, если вы введете два адреса электронной почты, он возвращает электронные письма только там, где они оба находятся в поле. Так что я думаю, что единственный способ найти первое электронное письмо, отправленное вам двумя разными пользователями, это сделать

results = service.users().messages().list(userId='me', q='from:(user1@gmail.com) to:(me@gmail.com)',labelIds = ['INBOX']).execute()
results = service.users().messages().list(userId='me', q='from:(user2@gmail.com) to:(me@gmail.com)',labelIds = ['INBOX']).execute()
...