`
VerRan
  • 浏览: 458732 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

james 数据库存储邮件信息

    博客分类:
  • JAVA
阅读更多

  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]).getAddress();
			System.out.println("FROM: " + from);
			// 获取主题
			String subject = message.getSubject();
			System.out.println("SUBJECT: " + subject);
			// 获取信息对象
			Part messagePart = message;
			Object content = messagePart.getContent();
			// 附件
			if (content instanceof Multipart) {
				messagePart = ((Multipart) content).getBodyPart(0);
				System.out.println("[ Multipart Message ]");
			}
			// 获取content类型
			String contentType = messagePart.getContentType();
			// 如果邮件内容是纯文本或者是HTML,那么打印出信息
			System.out.println("CONTENT:" + contentType);
			if (contentType.startsWith("text/plain")
					|| contentType.startsWith("text/html")) {
				InputStream is = messagePart.getInputStream();
				BufferedReader reader = new BufferedReader(
						new InputStreamReader(is));
				String thisLine = reader.readLine();
				while (thisLine != null) {
					System.out.println(thisLine);
					thisLine = reader.readLine();
				}
			}
			System.out.println("-------------- END ---------------");
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
}

 

显示结果:

FROM: VerRanLiu@localhost
SUBJECT: a test mail
CONTENT:text/plain; charset=us-ascii
this is the email content


-------------- END ---------------

 

 

 

分享到:
评论

相关推荐

    Apache James邮件服务器用户信息的数据库存储问题.doc

    Apache James邮件服务器用户信息的数据库存储问题.doc

    james外网配置及使用MYSQL数据库存储邮件内容

    这篇博客"james外网配置及使用MYSQL数据库存储邮件内容"主要讲解了如何配置James以便在外部网络上运行,并利用MySQL数据库来存储邮件内容,这在大型企业或需要稳定邮件服务的环境中非常常见。以下是对这一主题的详细...

    Java开源邮件服务器james源码

    4. **邮件存储**:James支持多种邮件存储机制,包括基于文件系统的存储和基于数据库(如MySQL)的存储。这提供了灵活性,可以根据环境选择合适的存储方案。 5. **反垃圾邮件功能**:James包含了一些内置的反垃圾...

    基于ApacheJames邮件服务器的收发邮件代码及服务

    - 配置James的配置文件(如`conf/james-server.xml`),包括端口号、用户数据库、存储设置等。 - 启动服务器,通常通过运行包含在发布包中的启动脚本来完成。 2. **JavaMail API的介绍** JavaMail API是Java平台...

    james-2.3.2邮件服务器

    4. **邮件存储**:James可以使用多种后端存储机制,如文件系统、LDAP目录服务或JDBC数据库,提供了灵活的邮件存储方案。 5. **管理接口**:James提供了Web管理界面,使得管理员能够远程管理邮件服务器,包括用户...

    james_mail邮件系统(框架SSH)

    3. **邮件存储**:James使用其内置的邮件存储机制,如Maildir或Mbox格式,来保存邮件。这些格式允许高效地管理和检索邮件。 4. **账号管理**:系统允许创建、修改和删除用户账户,设置账户权限,如邮箱大小限制、...

    james sql驱动\数据库驱动包.rar

    数据库驱动的正确安装和配置对于James服务器的稳定运行至关重要,因为这决定了服务器能否成功存储和检索邮件、用户账户和其他元数据。此外,确保驱动版本与数据库服务器版本兼容也是十分重要的,否则可能会遇到兼容...

    James+Javamail构建邮件服务

    James具有非常灵活的配置选项,特别是对于邮件内容的存储和用户信息的管理,支持文件系统、数据库等多种存储方式。由于James性能稳定且高度可配置,并且作为开源项目,不存在任何版权问题,因此在众多企业级项目中...

    James邮件服务器简介与配置

    5. 文件系统和数据库两种方式的邮件存储机制。 6. 用户账户存储机制,包括文件系统和LDAP目录服务。 7. 支持安全的TLS(SSL)连接,增强邮件传输的安全性。 8. SMTP认证,确保只有授权用户能发送邮件。 James的设计...

    james3.0.1 邮件服务器 配置

    James包括SMTP服务器、POP3服务器、IMAP4服务器以及邮件存储管理等多个部分。SMTP用于发送邮件,POP3和IMAP4用于接收邮件,而邮件存储则负责保存和检索邮件。 **SMTP服务器配置:** 在James的配置中,SMTP服务器的...

    James搭建邮件服务器

    2. 解除数据库存储配置的注释(如 1192-1194 行),这需要你有 MySQL 数据库,并且配置好相应的数据库连接信息,包括驱动、URL、用户名和密码。 3. 将 MySQL 的驱动 JAR 文件(如 mysql-connector-java-5.1.18.jar)...

    james3.0.0邮件系统

    2. **存储机制**:James支持多种存储解决方案,包括基于文件系统的存储、RDBMS(关系数据库管理系统)存储如MySQL或PostgreSQL,以及NoSQL数据库如MongoDB。这使得用户可以根据实际需求选择最适合的存储方式。 3. *...

    james和javamail实现邮件收发(带发送附件)

    James的核心特性之一是其可扩展性,可以通过插件连接到各种数据库,以便存储和管理邮件数据。 JavaMail API是Java平台上的一个标准API,用于处理邮件服务。它提供了丰富的类和接口,可以用来创建、发送、接收和管理...

    Apache James Server 3配置说明

    针对不同的存储方式(如文件、数据库等),每种方式都有一个URL前缀(例如***),可以在mailetcontainer.xml中指定用来存放垃圾邮件和邮件的位置。 **Domain Persistence(域持久化)**: 域持久化配置在domainlist...

    james3.0.1 邮件服务器

    James的核心特性包括邮件存储、SMTP(简单邮件传输协议)、POP3(邮局协议)以及IMAP4(因特网消息访问协议)支持,使得用户可以通过多种方式接收和发送邮件。 在Apache James 3.0.1 版本中,引入了一些关键改进...

    James邮件服务器

    此外,James支持多种存储后端,如文件系统、MySQL数据库或JDBM,这为存储和检索邮件提供了灵活性。 ### 安全性和认证 为了确保邮件的安全,James支持SSL/TLS加密,这可以保护邮件在传输过程中的隐私。同时,它提供...

    Apache James邮件服务器配置

    2. **数据库连接**:James支持多种数据库存储用户信息,如MySQL、PostgreSQL等。需要配置相应的数据库连接参数,如URL、用户名、密码等。 3. **用户管理**:James提供了用户账户的管理功能,可以使用文件系统、LDAP...

    apache James使用入门

    此外,James 还提供了灵活的配置选项,支持不同的数据存储方式,包括文件系统、数据库等。由于其稳定性、高度可配置性以及开放源代码的特性,James 在众多项目中得到了广泛应用。 目前,James 的常用版本为 2.1,但...

Global site tag (gtag.js) - Google Analytics