📄 pop3.java
字号:
package jws.net;
// Copyright 1997, John Webster Small
// All rights Reserved
import java.io.*;
import java.util.*;
import java.net.*;
public class POP3 implements Serializable
{
protected String server;
protected int port;
/** Default POP3 port is 110. */
public final static int defaultPort = 110;
protected String user;
protected String password;
private String response = "";
public String getResponse() { return response; }
protected POP3()
{
server = user = password = "";
port = defaultPort;
}
public POP3
(String server, int port, String user, String password)
{
this.server = server;
this.port = port;
this.user = user;
this.password = password;
}
public POP3(String server, String user, String password)
{ this(server,defaultPort,user,password); }
public Vector readMail(boolean deleteOnServer)
throws IOException, UnknownHostException
{
boolean ok;
int messageCount = 0;
Vector messages = new Vector();
Socket s = null;
BufferedReader in = null;
PrintWriter out = null;
try {
s = new Socket(server,port);
in = new BufferedReader
(new InputStreamReader(s.getInputStream()));
out = new PrintWriter
(new BufferedOutputStream(s.getOutputStream()));
response = in.readLine();
System.out.println(response);
ok = response.startsWith("+OK");
if (!ok)
throw new IOException(response);
out.println("USER " + user);
out.flush();
response = in.readLine();
ok = response.startsWith("+OK");
if (!ok)
throw new IOException(response);
out.println("PASS " + password);
out.flush();
response = in.readLine();
ok = response.startsWith("+OK");
if (!ok)
throw new IOException(response);
out.println("STAT");
out.flush();
response = in.readLine();
ok = response.startsWith("+OK");
if (!ok)
throw new IOException(response);
StringTokenizer st = new StringTokenizer(response," ");
if (!st.hasMoreTokens())
throw new IOException("STAT error: " + response);
st.nextToken();
if (!st.hasMoreTokens())
throw new IOException("STAT error: " + response);
messageCount = Integer.parseInt(st.nextToken());
for (int i = 1; i <= messageCount; i++) {
Email msg = new Email();
messages.addElement(msg);
out.println("RETR "+ i);
out.flush();
String buf = in.readLine();
if (buf.startsWith("+OK")) {
while (msg.insertHeaderLine(in.readLine()));
Vector body = new Vector();
buf = in.readLine();
while (!buf.equals(".")) {
if (buf.startsWith("."))
body.addElement(buf.substring(1));
else
body.addElement(buf);
buf = in.readLine();
}
if (body.size() > 0)
msg.attachBody(body);
}
}
if (deleteOnServer)
for (int i = 1; i <= messageCount; i++) {
out.println("DELE " + i);
out.flush();
in.readLine();
}
} finally {
if (in != null)
in.close();
if (out != null)
out.close();
if (s != null)
s.close();
}
return messages;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -