日期:2014-05-16 浏览次数:20650 次
??1. 修改存储方式
打开:C:\james-2.3.2\apps\james\SAR-INF\config.xml
?
注释掉下面文件存储方式:
<repository name="LocalUsers" class="org.apache.james.userrepository.UsersFileRepository"> <destination URL="file://var/users/"/> </repository>
?
数据库存储方式:
<repository name="LocalUsers" class="org.apache.james.userrepository.JamesUsersJdbcRepository" destinationURL="db://maildb/users"> <sqlFile>file://conf/sqlResources.xml</sqlFile> </repository>
?2. 打开数据库配置信息,根据具体数据库类型进行配置,下面已Oracle为例
<data-source name="maildb" class="org.apache.james.util.mordred.JdbcDataSource"> <driver>oracle.jdbc.driver.OracleDriver</driver> <dburl>jdbc:oracle:thin:@133.64.41.132:1521:IOMTSTDB</dburl> <user>mail</user> <password>mail</password> <max>20</max> </data-source>
?3. 通过telnet localhost 4555 建立一个用户
??? add user lht lht
??? 这里我测试的时候遇到一个问题,总是报表或试图不存在异常,理论上james 执行adduser命令时会自己创建users表。 不知道为什么我这里总是不能自动建立,不过我们可以通过sqlResources.xml 获取创建sql进行手工建立
sql如下:
CREATE TABLE users (username VARCHAR(64) NOT NULL, pwdHash VARCHAR(50), pwdAlgorithm VARCHAR(20), useForwarding INTEGER, forwardDestination VARCHAR(255), useAlias INTEGER, alias VARCHAR(255), PRIMARY KEY(username))
?
命令执行成功后
执行:
?select * from users 可以看到刚建立的用户了。
?
4.? 执行邮件发送
??? 通过上篇的邮件发送程序发送邮件,查看?? select * from INBOX? 表就可以看到发送的邮件信息了。
5. 接收邮件
package com.spring.mail; import javax.mail.*; import javax.mail.internet.*; import java.util.*; import java.io.*; public class RecieveMail { /** *<br> * 方法说明:主方法,接收用户输入的邮箱服务器、用户名和密码 <br> * 输入参数: <br> * 返回类型: */ public static void main(String args[]) { try { String popServer = "localhost"; String popUser = "dove"; String popPassword = "dove"; receive(popServer, popUser, popPassword); } catch (Exception ex) { System.out.println("Usage: java com.lotontech.mail.POPMail" + " popServer popUser popPassword"); } System.exit(0); } /** *<br> * 方法说明:接收邮件信息 <br> * 输入参数: <br> * 返回类型: */ public static void receive(String popServer, String popUser, String popPassword) { Store store = null; Folder folder = null; try { // 获取默认会话 Properties props = System.getProperties(); Session session = Session.getDefaultInstance(props, null); // 使用POP3会话机制,连接服务器 store = session.getStore("pop3"); store.connect(popServer, popUser, popPassword); // 获取默认文件夹 folder = store.getDefaultFolder(); if (folder == null) throw new Exception("No default folder"); // 如果是收件箱 folder = folder.getFolder("INBOX"); if (folder == null) throw new Exception("No POP3 INBOX"); // 使用只读方式打开收件箱 folder.open(Folder.READ_ONLY); // 得到文件夹信息,获取邮件列表 Message[] msgs = folder.getMessages(); for (int msgNum = 0; msgNum < msgs.length; msgNum++) { printMessage(msgs[msgNum]); } } catch (Exception ex) { ex.printStackTrace(); } finally { // 释放资源 try { if (folder != null) folder.close(false); if (store != null) store.close(); } catch (Exception ex2) { ex2.printStackTrace(); } } } /** *<br> * 方法说明:打印邮件信息 <br> * 输入参数:Message message 信息对象 <br> * 返回类型: */ public static void printMessage(Message message) { try { // 获得发送邮件地址 String from = ((InternetAddress) message.getFrom()[0]) .getPersonal(); if (from == null) from = ((InternetAddress) message.getFrom()[0]).getAddre