我正在研究Android工作室中的一个片段,其目的是显示To/From,Subject和消息正文。到目前为止,我能够检索,解码和显示正文。我尝试使用类似的方法为标题,但由于某种原因,它不正确解码,或我的方法调用没有得到正确的信息。以下是我正在使用的代码:如何使用Java使用Gmail-API解码邮件的标头?
String user = "me";
String query = "in:inbox is:unread";
textView.setText("Inbox");
ListMessagesResponse messageResponse =
mService.users().messages().list(user).setQ(query).setMaxResults(Long.valueOf(1)).execute();
List<Message> messages = messageResponse.getMessages();
for(Message message : messages){
Message message2 = mService.users().messages().get(user, message.getId()).execute();
//Get Headers
byte[] headerBytes = Base64.decodeBase64(message2.getPayload().getParts().get(0).getHeaders().get(0).getName().toString().trim()); // get headers
String header = new String(headerBytes, "UTF-8");
//Get Body
byte[] bodyBytes = Base64.decodeBase64(message2.getPayload().getParts().get(0).getBody().getData().trim().toString()); // get body
String body = new String(bodyBytes, "UTF-8");
messageList.add(header);
messageList.add(body);
}
return messageList;
// get body
下的部分有效。但//Get Headers
下的部分会返回带有奇怪符号的数据,其中包括黑色菱形,里面有白色问号,随机顺序是字母。我已尝试Base64.decodeBase64
陈述headerBytes
中方法调用的许多不同组合和顺序,但无法成功。有什么我失踪?
编辑:我查看了google开发者网站上的gmail-api文档,我仍然对如何存储标题信息以及如何检索To,From和Subject等具体内容感到困惑。这可能是我的问题,因为我可能没有针对正确的数据。
嗯,我现在只觉得很无聊。谢谢您的回答。它帮助我意识到我的问题是尝试解码标题。我不需要解码它。下面的代码行:'String h = message2.getPayload()。getHeaders()。get(5).getValue()。toString();'这正是你在Java中对它们进行分类时所提到的。谢谢。 (你第二次帮助我!)。 – Kumar
@Harold啊,哈哈。你是对的:)不客气! – Tholle