java mail api javax.mail.MessageException连接失败pop3

java mail api javax.mail.MessageException连接失败pop3,java,jakarta-mail,pop3,Java,Jakarta Mail,Pop3,我想使用java邮件api从用户帐户读取邮件 邮件服务器是一个特定的邮件服务器: ReadEMail.java-客户端 Properties props = System.getProperties(); props.put("mail.debug", "true"); props.put("mail.pop3.host", host); props.put("mail.pop3.port", port); props.put("mail.pop3.user", username); props

我想使用java邮件api从用户帐户读取邮件

邮件服务器是一个特定的邮件服务器:

ReadEMail.java-客户端

Properties props = System.getProperties();
props.put("mail.debug", "true");
props.put("mail.pop3.host", host);
props.put("mail.pop3.port", port);
props.put("mail.pop3.user", username);
props.put("mail.pop3.timeout", "158000");
props.put("mail.pop3.connectiontimeout", "158000");
/*  Create the session and get the store for read the mail. */
session = Session.getInstance(props);
store = session.getStore("pop3");
session.setDebug(true);
store.connect(host,username, password);
客户端上的错误消息:

DEBUG POP3: mail.pop3.apop.enable: false

DEBUG POP3: mail.pop3.disablecapa: false
DEBUG POP3: connecting to host "localhost", port 4444, isSSL false
S: +OK  Mail Server Ready 
C: CAPA
S: 
javax.mail.MessagingException: Connect failed;
  nested exception is:
    java.io.IOException: Unexpected response: 
    at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:210)
    at javax.mail.Service.connect(Service.java:295)
    at javax.mail.Service.connect(Service.java:176)
    at com.mail.reader.MailReader.connect(MailReader.java:67)
    at com.mail.reader.TestMailReader.main(TestMailReader.java:21)
Caused by: java.io.IOException: Unexpected response: 
    at com.sun.mail.pop3.Protocol.readResponse(Protocol.java:752)
    at com.sun.mail.pop3.Protocol.multilineCommand(Protocol.java:766)
    at com.sun.mail.pop3.Protocol.capa(Protocol.java:675)
    at com.sun.mail.pop3.Protocol.<init>(Protocol.java:140)
    at com.sun.mail.pop3.POP3Store.getPort(POP3Store.java:261)
    at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:206)
    ... 4 more
DEBUG POP3:mail.POP3.apop.enable:false
调试POP3:mail.POP3.disablecapa:false
调试POP3:连接到主机“localhost”,端口4444,isSSL false
S:+OK邮件服务器就绪
C:CAPA
S:
javax.mail.MessaginException:连接失败;
嵌套异常是:
java.io.IOException:意外响应:
在com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:210)上
在javax.mail.Service.connect(Service.java:295)
在javax.mail.Service.connect(Service.java:176)
在com.mail.reader.MailReader.connect上(MailReader.java:67)
位于com.mail.reader.TestMailReader.main(TestMailReader.java:21)
原因:java.io.IOException:意外响应:
位于com.sun.mail.pop3.Protocol.readResponse(Protocol.java:752)
在com.sun.mail.pop3.Protocol.multilecommand上(Protocol.java:766)
位于com.sun.mail.pop3.Protocol.capa(Protocol.java:675)
位于com.sun.mail.pop3.Protocol.(Protocol.java:140)
位于com.sun.mail.pop3.POP3Store.getPort(POP3Store.java:261)
在com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:206)上
... 4更多

鉴于它似乎在抱怨对CAPA的意外响应,可能是您的邮件服务器发送了非标准响应。您可以尝试将
mail.pop3.disablecapa
设置为true,这样它就不会发送CAPA


作为旁白
System.getProperties()返回一个共享属性对象,不确定这是否是您想要的。也许做一个
新属性()相反?

能否将“mail.debug”和“mail.debug.quote”添加到“true”中。然后发布您将在System.out上看到的协议跟踪。我尝试调试客户端和服务器。在服务器端,一切似乎都正常(我还使用telnet测试了pop3端口,它的工作原理与预期一致)。使用java mail api,客户端似乎在服务器向CAPA命令发送响应之前关闭了连接。如何解决此问题?是否尝试了“mail.debug.quote”?看起来服务器正在发送一些意外的消息,可能只是一个违反协议规范的空行。设置“mail.debug.quote”将帮助我们准确地看到服务器返回的内容。使用telnet时,当您输入CAPA命令时,服务器返回什么?它输入服务器接受的命令列表。