[英]gmail-api marking as "read"
使用 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();
}
}
setRemoveLabelIds() 的參數不是標簽字符串而是標簽 ID。 因此,從下面的代碼中獲取標簽 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();
}
這是我使用的一個(在使用 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.