【发布时间】:2017-09-12 04:46:48
【问题描述】:
我正在编写一个小应用程序来在 GMail 收件箱中生成统计信息,以帮助完成清理邮箱的无休止任务。
我的代码正在运行,但我不必要地下载消息的有效负载数据以仅访问消息标头(来自字段标头)。
Gmail.Users.Messages.Get.setFields(String) 方法带有有效载荷选项,但有效载荷正是其中最重的部分。我已经尝试过使用“payload.header”、“payload.headers”等值,但这些值都不起作用。
所以问题是,我怎样才能只访问来自字段的消息而不是获取整个有效负载数据以提高性能?
Map<String, Integer> emailAddressCountMap = new HashMap<String, Integer>();
for (Message message : messages) {
Message m1 = service.users().messages().get(user, message.getId()).setFields("payload").execute();
Stream<String> fromHeaderValue = m1.getPayload().getHeaders().stream()
.filter(h -> "From".equals(h.getName())).map(h -> h.getValue());
String emailAddress = fromHeaderValue.toArray(String[]::new)[0];
Integer count = emailAddressCountMap.get(emailAddress);
if (count == null) {
count = 0;
}
emailAddressCountMap.put(emailAddress, count + 1);
System.out.println(emailAddress + ": " + count);
}
【问题讨论】:
标签: java performance google-api gmail-api