I am writing a demo to learn IMAP command. When I fetched the header, the server returns the "date" and "from" fields to my input stream. But checking the result in the terminal, I find that some fields of the mail header are Unicode(like ?gb2312?B?zfjS19PDu6fW0NDE?) or BASE64 strings. So how can I translate them to standard encoding?
This is my code:
import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils;
import java.io.*;
import java.net.Socket;
/**
* Created by joelchen on 2016/12/7.
*/
public class APP {
public static Socket Client = null;
public static BufferedReader inFormServer = null;
public static DataOutputStream toServer = null;
public static void connect() throws IOException{
Client = new Socket(host,143);
inFormServer = new BufferedReader(new InputStreamReader(Client.getInputStream()));
toServer = new DataOutputStream(Client.getOutputStream());
//str = inFormServer.readLine();
//System.out.println(str);
if(Client != null && inFormServer != null && toServer != null){
toServer.writeBytes("a001 login user pass\n");
toServer.writeBytes("a002 select inbox\n");
//toServer.writeBytes("a003 SEARCH UNSEEN UNDELETED\n");
toServer.writeBytes("A654 FETCH 1:10 (FLAGS BODY[HEADER.FIELDS (DATE FROM)])\n");
toServer.writeBytes("a005 LOGOUT\n");
String answer;
while((answer = inFormServer.readLine()) != null){
System.out.println("Server :" + answer);
//*if(answer.indexOf("OK") != -1){
//break;
}
}
}
}
The result I got:
Server :* FLAGS (\Answered \Seen \Deleted \Draft \Flagged)
Server :* OK [PERMANENTFLAGS (\Answered \Seen \Deleted \Draft \Flagged)] Limited
Server :a002 OK [READ-WRITE] SELECT completed
Server :* 1 FETCH (FLAGS (\Seen) BODY[HEADER.FIELDS (DATE FROM)] {104}
Server :Date: Tue, 8 Nov 2016 21:10:27 +0800
Server :From: =?UTF-8?B?5paw5rWq5b6u5Y2a?= <message@service.weibo.com>
Server :
Server :)
Server :* 2 FETCH (FLAGS (\Seen) BODY[HEADER.FIELDS (DATE FROM)] {114}
Server :Date: Wed, 9 Nov 2016 22:53:38 +0800 (CST)
Server :From: =?gb2312?B?zfjS19PDu6fW0NDE?= <passport@service.netease.com>
Server :
Server :)
Server :* 3 FETCH (FLAGS (\Seen) BODY[HEADER.FIELDS (DATE FROM)] {104}
Server :Date: Fri, 11 Nov 2016 05:07:05 -0000
Server :From: "PlayStation" <Sony@email.sonyentertainmentnetwork.com>
Server :
Server :)
Server :* 4 FETCH (FLAGS (\Seen) BODY[HEADER.FIELDS (DATE FROM)] {104}
Server :Date: Fri, 11 Nov 2016 05:28:26 -0000
Server :From: "PlayStation" <Sony@email.sonyentertainmentnetwork.com>
Server :
Server :)
Server :* 5 FETCH (FLAGS () BODY[HEADER.FIELDS (DATE FROM)] {105}
Server :Date: Sat, 12 Nov 2016 02:44:12 +0800
Server :From: =?UTF-8?B?5paw5rWq5b6u5Y2a?= <message@service.weibo.com>
Server :
Server :)
Server :* 6 FETCH (FLAGS () BODY[HEADER.FIELDS (DATE FROM)] {105}
Server :Date: Sun, 13 Nov 2016 18:18:02 +0800
Server :From: =?UTF-8?B?5paw5rWq5b6u5Y2a?= <message@service.weibo.com>
Server :
Server :)
Server :* 7 FETCH (FLAGS () BODY[HEADER.FIELDS (DATE FROM)] {105}
Server :Date: Mon, 14 Nov 2016 12:55:08 +0800
Server :From: =?UTF-8?B?5paw5rWq5b6u5Y2a?= <message@service.weibo.com>
Server :
Server :)
Server :* 8 FETCH (FLAGS () BODY[HEADER.FIELDS (DATE FROM)] {105}
Server :Date: Tue, 15 Nov 2016 16:35:52 +0800
Server :From: =?UTF-8?B?5paw5rWq5b6u5Y2a?= <message@service.weibo.com>
Server :
Server :)