简体   繁体   中英

gmail-api marking as "read"

Using gmail-api I am trying to mak a message as "read" as below but it s not working.

 ModifyMessageRequest mods = new ModifyMessageRequest()
            .setRemoveLabelIds(new ArrayList<String>(Arrays.asList("UNREAD")));
    com.google.api.services.gmail.model.Message message = null;
    try {
        message = mService.users().messages().modify(acct.sEmail, gmsailID, mods).execute();
    } catch (IOException e) {
        e.printStackTrace();
    }
    }

The argument for setRemoveLabelIds() is not the Label String but the Label ID. So get the label ID from the code below and use that in your function

    List<String> labels = new ArrayList<String>();
    ListLabelsResponse listResponse = service.users().labels().list(userId).execute();
    for (Label label : listResponse.getLabels()) {
        Label countLabel = service.users().labels().get(userId, label.getId()).execute();
        if (countLabel.getName().equalsIgnoreCase("UNREAD"))
            unreadId = countLabel.getId();
    }
    List<String> add = new ArrayList<String>();
    List<String> remove = new ArrayList<String>();
    remove.add(unreadId);
    modifyMessage(service, userId, message.getId(), add, remove);


public static void modifyMessage(Gmail service, String userId, String messageId,
                                 List<String> labelsToAdd, List<String> labelsToRemove) throws IOException {
    ModifyMessageRequest mods = new ModifyMessageRequest().setAddLabelIds(labelsToAdd)
            .setRemoveLabelIds(labelsToRemove);
    Message message = service.users().messages().modify(userId, messageId, mods).execute();
}

Here is one that I use (after getting messageId with ListMessagesResponse):

public void modifyMessage(String userId, String messageId) throws IOException {
        List<String> lblIDRemove=new ArrayList<String>();
        lblIDRemove.add("UNREAD");
        ModifyMessageRequest mods = new ModifyMessageRequest()
                .setAddLabelIds(null)
                .setRemoveLabelIds(lblIDRemove);
        Message message = mService.users().messages().modify(userId, messageId, mods).execute();
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM