Wolfman

James + derby 不可以发大小超过 1M(1024*1024Byte) 的邮件

使用 James + Derby 构建 email 系统, 发送邮件大小有限制

问题:
  1. 配置好 james 使用 derby 作为存储邮件的数据库.
     懒,把 username/password 给 james 自己来创建它要的表.用如下的url:
          jdbc:derby://localhost/maildb;create=true
  2. 启动 James
      1) 没任何报错问题
      2) 测试简单邮件可以通过
      3) 发大邮件不可以通过      // 问题出现

处理过程:
  1. 检查 derby 中 maildb schema 中的 deadletter, inbox, spool 这几个表中的 blob 类型的长度都是 1048576 Byte(1024*1024Byte = 1M).
  2. 查 derby 的 blob 说明没有说限制这么小的. 至少它的例子就建了个 16M 的都可以通过.
  3. 删掉 James 自动建的那几个表, 自己手工再建一次. deadletter, inbox, spool 这几个表的结构是相同的:

CREATE TABLE deadletter (                    -- inbox, spool 也用相同的结构建表
    message_name varchar(200NOT NULL ,
    repository_name 
varchar(255NOT NULL ,
    message_state 
varchar(30NOT NULL ,
    error_message 
varchar(200) ,
    sender 
varchar(255) ,
    recipients 
varchar(1000NOT NULL ,
    remote_host 
varchar(100NOT NULL ,
    remote_addr 
varchar(20NOT NULL ,
    message_body blob(20M) 
NOT NULL ,        -- 指定 blob 的大小,不用默认的
    message_attributes blob(20M) ,           -- 指定 blob 的大小,不用默认的
    last_updated timestamp NOT NULL ,
    
PRIMARY KEY (repository_name, message_name)
);


再次启动 James 测试大邮件(当然不可以超过 Blob 类型的指定长度, 这里是20M),问题解决!

posted on 2006-01-21 13:18 wolfman.wu 阅读(347) 评论(0)  编辑  收藏 所属分类: Java


只有注册用户登录后才能发表评论。


网站导航: