有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Apache Commons Net POP3与Gmail的连接

我正在使用Apache Commons Net的POP3支持从我的Gmail收件箱中检索电子邮件。我使用以下代码打开与Gmail的POP3服务器的连接:

String server = "pop.gmail.com";
String username = "<my gmail>";
String password = "<my password>";

POP3Client pop3 = new POP3Client();
pop3.setDefaultTimeout(15000);
pop3.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out), true));

System.out.println("Connecting...");
try {
    pop3.connect(server, 995);
} catch (IOException e) {
    e.printStackTrace();
    System.exit(1);
}

但这会导致以下错误:

java.io.EOFException: Connection closed without indication.
    at org.apache.commons.net.pop3.POP3.__getReply(POP3.java:117)
    at org.apache.commons.net.pop3.POP3._connectAction_(POP3.java:153)
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:189)
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:209)
    at com.sms.POP3Mail.main(POP3Mail.java:66)

为什么会发生这种情况,我该如何解决


共 (2) 个答案

  1. # 1 楼答案

    您需要在Constructor中设置隐式标志以连接Gmail并使用POP3SClient:

    POP3SClient pop3 = new POP3SClient(true);
    
  2. # 2 楼答案

    我发现了问题。谷歌在使用POP3时需要SSL。我添加了SSL身份验证,现在一切都好了