try{
smtpSocket= new Socket("pop.rediffmail.com",110);
os=new DataOutputStream(smtpSocket.getOutputStream());
is=new BufferedReader(new InputStreamReader(smtpSocket.getInputStream()));
System.out.print("Inbox List": \n");
os.writeBytes("list\r\n");
System.out.println(is.readLine());
本程序未显示所有邮件列表。怎么解决?
答案 0 :(得分:1)
阅读RFC 1939,它定义了POP3协议。特别是,请阅读section 3,它告诉您如何阅读多行响应:
对某些命令的响应是多行的。在这些情况下,哪个 在发送第一行后,会在下面清楚地显示 响应和CRLF,发送任何其他行,每个终止 通过CRLF对。当响应的所有行都已发送时,a 最后一行被发送,包括一个终止八位字节(十进制代码 046,"。")和CRLF对。如果是多行响应的任何行 从终止八位字节开始,该行是#34;字节填充"通过 预先终止八位字节到响应的那一行。 因此,多行响应以五个八位字节终止 " CRLF.CRLF&#34 ;.检查多行响应时,客户端会检查 查看该行是否以终止八位字节开头。如果是,如果 除了CRLF之外的八位字节,该行的第一个八位字节( 终止八位字节被剥夺了。如果是这样,如果CRLF立即 跟随终止字符,然后是POP的响应 服务器结束,包含" .CRLF"不考虑 多线响应的一部分。
例如:
try{
smtpSocket= new Socket("pop.rediffmail.com",110);
os=new DataOutputStream(smtpSocket.getOutputStream());
is=new BufferedReader(new InputStreamReader(smtpSocket.getInputStream()));
string line = is.readLine();
System.out.println(line);
if (line.startsWith("+OK")){
System.out.println("Inbox List:");
os.writeBytes("list\r\n");
line = is.readLine();
System.out.println(line);
if (line.startsWith("+OK")){
do {
line = is.readLine();
if (line == ".") break;
if (line.startsWith("."))
line = line.substring(1);
System.out.println(line);
}
while (true);
}
}