使用 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(200) NOT NULL ,
repository_name varchar(255) NOT NULL ,
message_state varchar(30) NOT NULL ,
error_message varchar(200) ,
sender varchar(255) ,
recipients varchar(1000) NOT NULL ,
remote_host varchar(100) NOT NULL ,
remote_addr varchar(20) NOT 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),问题解决!