Java 将标题中的Subject、From和To值分开

Java 将标题中的Subject、From和To值分开,java,oauth-2.0,gmail-api,Java,Oauth 2.0,Gmail Api,我正在从授权电子邮件中获取消息,但问题是java中标题的Subject、from和To值的分离,我成功地做到了以下几点:下面的代码工作正常,但分离需要更多的时间,我已经阅读了太多Gmail API文档,但我没有得到解决方案 ListMessagesResponse listResponse = service.users().messages().list(user).setMaxResults(10L) .setLabelIds(labelidlist).set

我正在从授权电子邮件中获取消息,但问题是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;
ListMessagesResponse listResponse=service.users().messages().list(user.setMaxResults)(10L)
.setLabelIds(labelidlist).setQ(query.execute();
ListOfMessages=listResponse.getMessages();
HashMap-msgsMap;
List messageslist=new ArrayList();
用于(消息:消息列表){
Message fullmessage=service.users().messages().get(“me”,Message.getId()).setFormat(“full”).execute();
msgsMap=newlinkedhashmap();
/*发生删除操作时,需要为threadid添加threadid*/
put(“threadid”,message.getThreadId());
List headers=fullmessage.getPayload().getHeaders();
如果(!headers.isEmpty()){
for(MessagePartHeader头:头){
字符串名称=header.getName();
put(“msgid”,message.getId());
if(名称、同等信号情况(“主体”)){
subject=header.getValue();
msgsMap.put(“主题”,主题);
}else if(name.equalsIgnoreCase(“From”)){
from=header.getValue().split(“如果您查看JSON,您可以看到
标题
是一个包含属性
名称
的对象数组。没有名为
To
Subject
的属性键。这就是您使用的库没有名为
getTo
getSubject
的方法的原因

这是有道理的,因为标题可能并不总是相同的

因此,您无法专门获取某个标头名称

参考:

我不确定我是否理解您的问题。您所说的分离是什么意思?
?我的意思是,我想从标题中获取主题、来源和详细信息,而不是重复多次,是否有可能获取。