日期:2014-05-16 浏览次数:20723 次
??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