35392

Open javamail folder failed

Question:

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

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?

Answer1:

It seems to be a mail server issue. STAT command is used to show number of messages. Normally STAT is the first command to run after successfully connected to the mail server.

Try to use mailSession.setDebug(true) to enter debug mode to get more error logs.

Answer2:

I had contact with Apache James and finally found the answer. You can find it at here: <a href="http://www.mail-archive.com/server-user@james.apache.org/msg14115.html" rel="nofollow">STAT command failed occasionally</a>. At the end of the page, the thread had been listed.

Recommend

  • how to bypass lotus notes password log in - JAVA code
  • javax.mail.MessagingException: 501 5.5.1 HELO/EHLO requires domain address
  • Listing Inbox with Javamail API
  • how to get file with int-ftp:outbound-gateway and remove from server if exists?
  • Compiling z3 ocaml binding in linux
  • RPC Client gives Can't encode arguments
  • R colour scale for logarithmic data?
  • Change between timezones
  • Pander formats tables weirdly when using significance stars and pandoc
  • Copy a file block per block in C
  • concatenating results from SQL query and NULL columns
  • C/C++ - Mac OS X - Check If file exists
  • Error publishing to Azure cloud service with osFamily=5
  • C++ Copy directory recursive under unix
  • Python Pandas Mixed Boolean Yes/True and NaN Columns
  • How can I find the Size of some specified files?
  • Beginner in SQLite
  • R encoding ASCII backtick
  • Declare struct containing time_t field in Python CFFI
  • turn two nested associative arrays into one flat array?
  • Error when trying to send an email using Gmail API in Java
  • How to restrict number of concurrent processes?
  • Condor job using DAG with some jobs needing to run the same host
  • Selenium and Google - How do you use cookies?
  • Use neo4j server instead of embedded mode
  • 3.0.0.M1: SSL - Invalid keystore format
  • How to copy styled text in JTextPane
  • For loop with if condition on multiple R functions
  • How to remove a SwiftyJSON element?
  • Content-Length header not returned from Pylons response
  • How to test if a URL from an Eclipse bundle is a directory?
  • Jenkins: How To Build multiple projects from a TFS repository?
  • Sony Xperia Z Tablet not found by adb
  • How to recover from a Spring Social ExpiredAuthorizationException
  • How can I estimate amount of memory left with calling System.gc()?
  • PHP: When would you need the self:: keyword?
  • Hits per day in Google Big Query
  • Memory offsets in inline assembly