Получить идентификатор сообщения с помощью Gmail API из списка, чтобы его можно было использовать позже при автоматизации - PullRequest
0 голосов
/ 25 февраля 2019

В настоящее время у меня есть быстрый блок кода, который будет перебирать учетную запись Gmail автоматизации, чтобы найти последнее сообщение, и перечислить его идентификатор.Как именно я могу сохранить этот идентификатор в отдельной строке, чтобы его можно было использовать позже, чтобы получить сообщение для сравнения.Я пропускаю конкретную строку кода или мне нужно каким-то образом переписать ее?Спасибо.

Создайте список сообщений, используя запрос.Это собирается напечатать идентификатор каждого сообщения.

private List<Message> listMessage(Gmail service,
                                  String query) throws IOException {
    ListMessagesResponse response = service.users().messages().list("me").setQ(query).execute();

    List<Message> messages = new ArrayList<Message>();
    while (response.getMessages() != null) {
        messages.addAll(response.getMessages());
        if (response.getNextPageToken() != null) {
            String pageToken = response.getNextPageToken();
            response = service.users().messages().list("me").setQ(query)
                    .setPageToken(pageToken).execute();
        } else {
            break;
        }
    }
    if(messages.isEmpty()) {
        listMessage(service, query);
    }
    for (Message message : messages) { //This is going to print the ID of each message.
        System.out.println(message.toPrettyString());
    }
    return messages;
}

Это будет самый последний.

public void listGmailEmail() {
    long unixTime = Instant.now().getEpochSecond();
    try {
        listMessage(service, "after: " + unixTime);

    } catch (IOException ignored) { }
}

1 Ответ

0 голосов
/ 28 февраля 2019

Я со временем разобрался.

  1. Получить список сообщений
  2. Превратить список в JSON
  3. Создать метод для получения сообщения
  4. Отфильтруйте JSON, чтобы получить идентификатор сообщения
  5. Примените идентификатор сообщения к новому методу
  6. Получите сообщение

    private List<Message> getMessageID(Gmail service,
                                  String query) throws IOException {
    ListMessagesResponse response = service.users().messages().list("me").setQ(query).execute();
    
    List<Message> messages = new ArrayList<Message>();
    while (response.getMessages() != null) {
        messages.addAll(response.getMessages());
        if (response.getNextPageToken() != null) {
            String pageToken = response.getNextPageToken();
            response = service.users().messages().list("me").setQ(query)
                    .setPageToken(pageToken).execute();
        } else {
            break;
        }
    }
    if(messages.isEmpty()) {
        getMessageID(service, query);
    }
    messageID = gson.toJson(messages);
    
    return messages;
    }
    
    private Message getEmail(Gmail service, String userId, String messageId)
        throws IOException {
    Message message = service.users().messages().get(userId, messageId).execute();
    
    email = message.toString();
    
    return message;
    }
    
    public void getGmailEmail() {
    try {
        getMessageID(service, "after: " + unixTime);
        messageID = messageID.split("\",")[0].substring(8);
        getEmail(service,"me", messageID);
        System.out.println("Email received");
        emailOrThread = email;
    } catch (IOException ignored) { }
    }
    
...