Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打开javamail文件夹失败_Java_Email_Jakarta Mail_James - Fatal编程技术网

打开javamail文件夹失败

打开javamail文件夹失败,java,email,jakarta-mail,james,Java,Email,Jakarta Mail,James,我使用javamail和apachejames开发了一个电子邮件网站,它大部分工作正常。但某些用户打开失败异常,无法接收新邮件。 接收电子邮件的代码: Session mailSession = Session.getInstance(System.getProperties(), null); mailSession.setDebug(false); Store store = null; Folder folder = null; //javax.mail.Folder try {

我使用javamail和apachejames开发了一个电子邮件网站,它大部分工作正常。但某些用户打开失败异常,无法接收新邮件。 接收电子邮件的代码:

Session mailSession = Session.getInstance(System.getProperties(), null);
mailSession.setDebug(false);
Store store = null;
Folder folder = null; //javax.mail.Folder
try {
    store = mailSession.getStore(SParam.PROTOCOL);
    store.connect(Property.getPop3(), userName, password);
    logger.info("trying to receive emails from james server...");
    folder = store.getFolder("INBOX");
    try {
        if (!folder.isOpen()) {
            folder.open(Folder.READ_WRITE); //the point of throwing the exception
        }
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
    //receive email from james server.
} catch (Exception e) {
    logger.error("Email Receive Error!" + StackTraceStr.st2str(e));
    try {
        folder.close(true);
    } catch (Exception e2) {
}
} finally {
    try {
        store.close();
    } catch (Exception cloex) {
    }
}
在大多数情况下,它工作得很好。但偶尔还是会出错:

javax.mail.MessagingException: Open failed;
nested exception is:
java.io.IOException: STAT command failed: null
at com.sun.mail.pop3.POP3Folder.open(POP3Folder.java:228)
at com.csc.mail.jsh.mail.core.ReceiveMail.receive(ReceiveMail.java:82)
at com.csc.mail.jsh.mail.core.ReceiveMail.run(ReceiveMail.java:222)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.IOException: STAT command failed: null
at com.sun.mail.pop3.Protocol.stat(Protocol.java:366)
at com.sun.mail.pop3.POP3Folder.open(POP3Folder.java:203)
... 3 more
等待您的帮助,非常感谢!

我调试了又调试,终于发现STAT命令失败了!当STAT命令出错时,james有一个例外,但这没有意义

21/11/12 14:39:16 ERROR pop3server: Exception during connection from 127.0.0.1     
    (127.0.0.1) : An exception occurred getting a database connection.
    org.apache.avalon.framework.CascadingRuntimeException: An exception occurred getting a database connection.
at org.apache.james.userrepository.AbstractJdbcUsersRepository.openConnection(AbstractJdbcUsersRepository.java:617)
    at org.apache.james.userrepository.AbstractJdbcUsersRepository.getUserByName(AbstractJdbcUsersRepository.java:521)
    at org.apache.james.userrepository.AbstractUsersRepository.test(AbstractUsersRepository.java:270)
    at org.apache.james.core.LocalUsersRepository.test(LocalUsersRepository.java:90)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.avalon.phoenix.components.application.BlockInvocationHandler.invoke(BlockInvocationHandler.java:134)
    at $Proxy4.test(Unknown Source)
    at org.apache.james.pop3server.POP3Handler.doPASS(POP3Handler.java:537)
    at org.apache.james.pop3server.POP3Handler.parseCommand(POP3Handler.java:479)
    at org.apache.james.pop3server.POP3Handler.handleConnection(POP3Handler.java:277)
    at org.apache.james.util.connection.ServerConnection$ClientConnectionRunner.run(ServerConnection.java:432)
    at org.apache.excalibur.thread.impl.ExecutableRunnable.execute(ExecutableRunnable.java:55)
    at org.apache.excalibur.thread.impl.WorkerThread.run(WorkerThread.java:116)
Caused by: java.sql.SQLException: Listener refused the connection with the following error:
    ORA-12519, TNS:no appropriate service handler found
    The Connection descriptor used by the client was: 192.168.250.23:1521:csmis
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:439)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
    at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:37)
    at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290)
    at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:771)
    at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
    at org.apache.james.util.dbcp.JdbcDataSource.getConnection(JdbcDataSource.java:220)
    at org.apache.james.userrepository.AbstractJdbcUsersRepository.openConnection(AbstractJdbcUsersRepository.java:614)
... 15 more
21/11/12 14:39:16错误pop3server:从127.0.0.1连接期间异常
(127.0.0.1):获取数据库连接时发生异常。
org.apache.avalon.framework.CascadingRuntimeException:获取数据库连接时发生异常。
位于org.apache.james.userrepository.AbstractJdbcUsersRepository.openConnection(AbstractJdbcUsersRepository.java:617)
位于org.apache.james.userrepository.AbstractJdbcUsersRepository.getUserByName(AbstractJdbcUsersRepository.java:521)
位于org.apache.james.userrepository.AbstractUsersRepository.test(AbstractUsersRepository.java:270)
位于org.apache.james.core.LocalUsersRepository.test(LocalUsersRepository.java:90)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
位于org.apache.avalon.phoenix.components.application.BlockInvocationHandler.invoke(BlockInvocationHandler.java:134)
在$Proxy4.test处(未知来源)
位于org.apache.james.pop3server.POP3Handler.doPASS(POP3Handler.java:537)
位于org.apache.james.pop3server.POP3Handler.parseCommand(POP3Handler.java:479)
位于org.apache.james.pop3server.POP3Handler.handleConnection(POP3Handler.java:277)
位于org.apache.james.util.connection.ServerConnection$ClientConnectionRunner.run(ServerConnection.java:432)
位于org.apache.excalibur.thread.impl.ExecutableRunnable.execute(ExecutableRunnable.java:55)
位于org.apache.excalibur.thread.impl.WorkerThread.run(WorkerThread.java:116)
原因:java.sql.SQLException:侦听器拒绝连接,出现以下错误:
ORA-12519,TNS:未找到适当的服务处理程序
客户端使用的连接描述符是:192.168.250.23:1521:csmis
位于oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
位于oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261)
位于oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
位于oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:439)
位于oracle.jdbc.driver.T4CConnection(T4CConnection.java:165)
位于oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
位于oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
位于org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:37)
位于org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290)
位于org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:771)
位于org.apache.commons.dbcp.poolgDataSource.getConnection(poolgDataSource.java:95)
位于org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
位于org.apache.james.util.dbcp.JdbcDataSource.getConnection(JdbcDataSource.java:220)
位于org.apache.james.userrepository.AbstractJdbcUsersRepository.openConnection(AbstractJdbcUsersRepository.java:614)
... 还有15个

所有应用程序都在同一台服务器上运行,只有少数用户在线(当我测试它时,只有我使用它)。错误只是偶尔出现。为什么?

这似乎是邮件服务器的问题
STAT
命令用于显示消息数。通常,
STAT
是成功连接到邮件服务器后运行的第一个命令


尝试使用
mailSession.setDebug(true)
进入调试模式以获取更多错误日志。

我与Apache James取得了联系,最终找到了答案。你可以在这里找到它:。在页面末尾,该线程已列出。

看起来更像是服务器端中断,可能会不时发生。是你的服务器吗?当你使用一个普通的邮件程序时,这个问题也会发生吗?@AlexandreLavoie。用javamail自己写一个clint。现在大约有200个用户(经常使用)和30000封电子邮件。您是否检查了最大同时会话或连接数?就像我在IMAP中的服务器一样,我已经多次达到这种限制。几乎每个web程序都有设置并发连接限制的配置。谢谢@AlexandreLavoie。但我不太确定,因为当用户“sa”登录时,所有电子邮件都可以成功接收(大约35封新邮件)。但用户“yan”不能(138封新邮件)。所以你的问题是随机的还是基于特定用户?您有权访问服务器日志吗?似乎是个好主意。我会修改它,看看会发生什么。但是日志文件的显示速度确实很快。谢谢@AlexCheng[2012-11-15 14:22:01]com.csc.mail.jsh.mail.core.ReceiveMail:[INFO]-正在尝试接收来自james server的电子邮件。。。C:STAT S:-ERR C:QUIT S:+OK Apache James POP3服务器注销。[2012-11-15 14:22:03]com.csc.mail.jsh.mail.core.ReceiveMail:[错误]-文件夹打开失败:javax.mail.MessagineException:打开失败;嵌套的异常是:java.io.IOException:STAT命令失败:com.sun.mail.pop3.POP3Folder.open(POP3Folder.java:228)com.csc.mail.jsh.mail.core.ReceiveMail.receive(ReceiveMail.java:82)com.csc.mail.core.ReceiveMail.run。。。