Разделить значения Subject, From и To из заголовков - PullRequest
0 голосов
/ 13 февраля 2020

Я получаю сообщения из авторизованной электронной почты, но проблема заключается в разделении значений Subject, From и To из заголовков в java, я преуспеваю в том, что приведенный ниже код работает нормально, но для его разделения требуется больше времени Я прошел через столько документации по 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;

1 Ответ

0 голосов
/ 13 февраля 2020

Если вы посмотрите на ресурс сообщения JSON, вы увидите, что headers - это массив объектов, которые содержат свойства name и value. Не существует ключа свойства с именем To или Subject. Вот почему в используемой вами библиотеке нет методов, называемых getTo или getSubject.

Это имеет смысл, поскольку заголовки не всегда могут быть одинаковыми.

Из-за это, вы не можете специально получить определенное имя заголовка.

Ссылка:

...