本人使用james-2.3.0作为邮件服务器,邮件存储方式采用数据库模式,而非文件模式,连接的数据库为oracle9i(在oracle中存储邮件的表为inbox表),
发送的带超过5k的附件的邮件的时候,服务器显示“发送成功”
如果是发送到163邮箱就可以正常收到超过5k的附件的邮件,但是如果发给本服务器就不能收到超过5k的附件的邮件,小于5k的附件的邮件可以正常接受,
本人猜想可能是james-2.3.0邮件服务器不能接受附件大于5k的邮件,我的config文件中已经将maxmessagesize设置为0(无限大小),
但是还是不行,网上有高手说是oracle驱动包的问题,但我将james-2.3.0驱动包换了三种(class12.jar,ojdbc14.jar,oracle.jar)尝试,还是不行。
如果将oracle换为mysql的数据库又可以接受大于5k的附件的邮件,很奇怪!望高手解决◎!

解决方案 »

  1.   

    按有几个群,你不妨加进去,可以和大家一起讨论啊.........46986340,28039577,4804620       
    在那里看看有无能回答你的,谢谢,LZ,甭忘了给俺分哦,谢谢LZ
      

  2.   

    看一下日志的错误输出!
    可以肯定不是James的问题,至少不是程序问题。
      

  3.   

    我看了 James的源代码,其中读取Message_body 的代码如下<sql name="retrieveMessageBodySQL">SELECT message_body FROM ${table} WHERE message_name = ? AND repository_name = ?</sql>            retrieveMessageStream = conn.prepareStatement(retrieveMessageBodySQL);
                retrieveMessageStream.setString(1, key);
                retrieveMessageStream.setString(2, repository.repositoryName);
                rsRetrieveMessageStream = retrieveMessageStream.executeQuery();            if (!rsRetrieveMessageStream.next()) {
                    throw new IOException("Could not find message");
                }            String getBodyOption = repository.sqlQueries.getDbOption("getBody");
                if (getBodyOption != null && getBodyOption.equalsIgnoreCase("useBlob")) {
                    Blob b = rsRetrieveMessageStream.getBlob(1);
                    headers = b.getBytes(1, (int)b.length());
                } else {
                    headers = rsRetrieveMessageStream.getBytes(1);
                }
    没有问题的。我还是怀疑你的配置文件或者驱动有问题
          <data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource">
             <driver>oracle.jdbc.driver.OracleDriver</driver>
    ...
          </data-source>你到 oracle9i 的目录搜索ojdbc*.jar 驱动,应该在一个JDBC目录下面
    复制到 james/lib 目录下面
      

  4.   

    最新的jdbc驱动可以在这里下载
    http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html