简体   繁体   English

gmail-api 标记为“已读”

[英]gmail-api marking as "read"

Using gmail-api I am trying to mak a message as "read" as below but it s not working.使用 gmail-api 我试图将消息设为“已读”,如下所示,但它不起作用。

 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. setRemoveLabelIds() 的参数不是标签字符串而是标签 ID。 So get the label ID from the code below and use that in your function因此,从下面的代码中获取标签 ID 并在您的函数中使用它

    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):这是我使用的一个(在使用 ListMessagesResponse 获取 messageId 之后):

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();
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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