打开javamail文件夹失败 [英] Open javamail folder failed

查看:87
本文介绍了打开javamail文件夹失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用javamail和apache-james开发了一个电子邮件网站,并且大多数情况下都能正常工作.但是某些用户遇到打开失败异常",并且无法接收新邮件. 接收电子邮件的代码:

I developed an email website using javamail and apache-james and it works well mostly. But some user got Open failed Exception and cannot receive new mail. The code of receive email:

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) {
    }
}

在大多数情况下,它可以正常工作.但是偶尔还是会出现错误:

In most cases, it works just fine. But still got the error occasionally:

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例外,但这没有意义!

Waiting your help and thanks a lot!

I debug and debug, finally found the STAT command failed! when STAT command got an error, there's an exception of james, but that makes no sence!

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

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

All application runs on the same server, and there's only a few users online(when I test it, only me use it). The error just appear occasionally. Why?

推荐答案

我与Apache James接触,终于找到了答案.您可以在这里找到它: STAT命令偶尔会失败.在页面末尾,该线程已被列出.

I had contact with Apache James and finally found the answer. You can find it at here: STAT command failed occasionally. At the end of the page, the thread had been listed.

这篇关于打开javamail文件夹失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆