从标题中分割主题,从和到值

问题描述 投票:0回答:1

我正在从授权的电子邮件中获取消息,但问题是从Java标头中分离出Subject,From和To值,我成功地实现了下面的代码可以正常工作,但是需要花费更多的时间进行分离,我有查阅了太多的Gmail API文档,但没有得到解决方案。

ListMessagesResponse listResponse = service.users().messages().list(user).setMaxResults(10L)
                .setLabelIds(labelidlist).setQ(query).execute();

List<Message> listofmesssages = listResponse.getMessages();

HashMap<String, Object> msgsMap;
List messageslist = new ArrayList();

for (Message message : listofmesssages) {
    Message fullmessage = service.users().messages().get("me", message.getId()).setFormat("full").execute();

    msgsMap = new LinkedHashMap<String, Object>();
    /*Adding threadid for threadid is required when delete operation has happen*/
    msgsMap.put("threadid", message.getThreadId());
    List<MessagePartHeader> headers = fullmessage.getPayload().getHeaders();

    if (!headers.isEmpty()) {
        for (MessagePartHeader header : headers) {
            String name = header.getName();
            msgsMap.put("msgid", message.getId());

            if (name.equalsIgnoreCase("Subject")) {
                subject = header.getValue();
                msgsMap.put("subject", subject);
            } else if (name.equalsIgnoreCase("From")) {
                from = header.getValue().split("<")[0];
                msgsMap.put("from", from);
            } else if (name.equalsIgnoreCase("To")) {
                to = header.getValue().split(" ")[0];
                msgsMap.put("to", to);
            } else if (name.equalsIgnoreCase("Date")) {
                String date = header.getValue();
                java.util.Date fecha = new java.util.Date(date);
                DateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.US);
                Date date1;
                date1 = (Date) formatter.parse(fecha.toString());
                Calendar cal = Calendar.getInstance();
                cal.setTime(date1);
                String formatedDate = cal.get(Calendar.DATE) + "/" + (cal.get(Calendar.MONTH) + 1) + "/"
                                + cal.get(Calendar.YEAR);
                msgsMap.put("date", formatedDate);
            }
        }
    }

    messageslist.add(msgsMap);
}

return messageslist;
java oauth-2.0 gmail-api
1个回答
0
投票

如果查看message resource JSON,则可以看到headers是包含属性namevalue的对象数组。没有名为ToSubject的属性键。这就是您使用的库没有名为getTogetSubject的方法的原因。

这很有意义,因为标题可能并不总是相同。

© www.soinside.com 2019 - 2024. All rights reserved.