- 浏览: 459605 次
- 性别:
- 来自: 陕西.西安
文章分类
最新评论
-
gaodadawei:
登录失败,请重试楼主,我目前遇到这样一个错误,claros i ...
James+Claros+intouch2.1配置 -
VerRan:
qq346448412 写道请问。你上一节、 用的ORACLE ...
James+Claros+intouch2.1配置 -
qq346448412:
请问。你上一节、 用的ORACLE数据库、 这一节又用的是MY ...
James+Claros+intouch2.1配置 -
paladin1988:
good,我喜欢..
Hibernate自关联关系 -
lygxy12:
请问,能给163发邮件吗?该怎么配置?我安装上面的操作,发给1 ...
James+Claros+intouch2.1配置
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 ---------------
发表评论
-
AKKA 学习笔记之1
2013-09-15 15:08 23536AKKA 是一款基于actor模型实现的 并发处理框架。基 ... -
Ant 集成 junit 自动生成测试报告
2013-08-28 08:56 1024在当下Maven 统治大片江山,Gradle后起之秀的情况 ... -
很有用的测试工具
2013-08-27 11:21 7181. findbugs findbugs是一种静态 ... -
java 之 JNI
2013-08-27 11:06 1692前言: 在查看java socket实现代码时最终发现其 ... -
HSQLDB实现学习笔记-数据库服务器连接
2013-08-27 10:27 12671 数据库服务器连接 主要用于描述客户端是如何与 ... -
HSQLDB实现学习笔记-数据库服务器创建
2013-08-27 10:16 2987前言: HSQLDB作为一个纯java实现的开源数据库, ... -
反射实现 AOP 动态代理模式(Spring AOP 的实现 原理)(转)2
2011-04-13 14:01 12111package sinosoft.dj.aop ... -
反射实现 AOP 动态代理模式(Spring AOP 的实现 原理)(转)
2011-04-13 13:49 873转自: http://www.blogjava.net/Do ... -
Sun Remote Procedure Call
2011-04-05 15:45 1330Most network programming is ... -
pushlet
2011-03-31 22:54 879http://baike.baidu.com/view/246 ... -
Comet:基于 HTTP 长连接的“服务器推”技术(转)
2011-03-31 22:39 882http://www.ibm.com/developerwor ... -
冒泡排序
2011-03-30 16:03 992package com.datastruct.sort; ... -
快速排序
2011-03-30 16:02 943package com.datastruct.sort; ... -
Cookie
2011-03-30 14:11 8051、登录www.iteye.com 输入用户名,密 ... -
OCP秘笈
2011-03-29 22:19 735http://oracle.chinaitlab.com/Sp ... -
HashCode计算方法
2011-03-29 17:34 967Returns a hash code for this ... -
Merkle-Hellman背包算法
2011-03-23 17:54 1117转自:http://baike.baidu.com/view/ ... -
Android webService访问实例
2011-03-23 13:09 4293参考网上的例子实现一个简单的天气查看功能。 界面包含一个按钮, ... -
Android 源码查看
2011-03-22 14:10 1563在网上看了几个关于源码查看的方法但是都不是很清晰,此文列出 ... -
在Android中解析XML数据
2011-03-21 22:20 976http://www.williamhua.com/2009/ ...
相关推荐
Apache James邮件服务器用户信息的数据库存储问题.doc
这篇博客"james外网配置及使用MYSQL数据库存储邮件内容"主要讲解了如何配置James以便在外部网络上运行,并利用MySQL数据库来存储邮件内容,这在大型企业或需要稳定邮件服务的环境中非常常见。以下是对这一主题的详细...
4. **邮件存储**:James支持多种邮件存储机制,包括基于文件系统的存储和基于数据库(如MySQL)的存储。这提供了灵活性,可以根据环境选择合适的存储方案。 5. **反垃圾邮件功能**:James包含了一些内置的反垃圾...
- 配置James的配置文件(如`conf/james-server.xml`),包括端口号、用户数据库、存储设置等。 - 启动服务器,通常通过运行包含在发布包中的启动脚本来完成。 2. **JavaMail API的介绍** JavaMail API是Java平台...
4. **邮件存储**:James可以使用多种后端存储机制,如文件系统、LDAP目录服务或JDBC数据库,提供了灵活的邮件存储方案。 5. **管理接口**:James提供了Web管理界面,使得管理员能够远程管理邮件服务器,包括用户...
3. **邮件存储**:James使用其内置的邮件存储机制,如Maildir或Mbox格式,来保存邮件。这些格式允许高效地管理和检索邮件。 4. **账号管理**:系统允许创建、修改和删除用户账户,设置账户权限,如邮箱大小限制、...
数据库驱动的正确安装和配置对于James服务器的稳定运行至关重要,因为这决定了服务器能否成功存储和检索邮件、用户账户和其他元数据。此外,确保驱动版本与数据库服务器版本兼容也是十分重要的,否则可能会遇到兼容...
James具有非常灵活的配置选项,特别是对于邮件内容的存储和用户信息的管理,支持文件系统、数据库等多种存储方式。由于James性能稳定且高度可配置,并且作为开源项目,不存在任何版权问题,因此在众多企业级项目中...
5. 文件系统和数据库两种方式的邮件存储机制。 6. 用户账户存储机制,包括文件系统和LDAP目录服务。 7. 支持安全的TLS(SSL)连接,增强邮件传输的安全性。 8. SMTP认证,确保只有授权用户能发送邮件。 James的设计...
James包括SMTP服务器、POP3服务器、IMAP4服务器以及邮件存储管理等多个部分。SMTP用于发送邮件,POP3和IMAP4用于接收邮件,而邮件存储则负责保存和检索邮件。 **SMTP服务器配置:** 在James的配置中,SMTP服务器的...
2. 解除数据库存储配置的注释(如 1192-1194 行),这需要你有 MySQL 数据库,并且配置好相应的数据库连接信息,包括驱动、URL、用户名和密码。 3. 将 MySQL 的驱动 JAR 文件(如 mysql-connector-java-5.1.18.jar)...
2. **存储机制**:James支持多种存储解决方案,包括基于文件系统的存储、RDBMS(关系数据库管理系统)存储如MySQL或PostgreSQL,以及NoSQL数据库如MongoDB。这使得用户可以根据实际需求选择最适合的存储方式。 3. *...
针对不同的存储方式(如文件、数据库等),每种方式都有一个URL前缀(例如***),可以在mailetcontainer.xml中指定用来存放垃圾邮件和邮件的位置。 **Domain Persistence(域持久化)**: 域持久化配置在domainlist...
James的核心特性之一是其可扩展性,可以通过插件连接到各种数据库,以便存储和管理邮件数据。 JavaMail API是Java平台上的一个标准API,用于处理邮件服务。它提供了丰富的类和接口,可以用来创建、发送、接收和管理...
James的核心特性包括邮件存储、SMTP(简单邮件传输协议)、POP3(邮局协议)以及IMAP4(因特网消息访问协议)支持,使得用户可以通过多种方式接收和发送邮件。 在Apache James 3.0.1 版本中,引入了一些关键改进...
此外,James支持多种存储后端,如文件系统、MySQL数据库或JDBM,这为存储和检索邮件提供了灵活性。 ### 安全性和认证 为了确保邮件的安全,James支持SSL/TLS加密,这可以保护邮件在传输过程中的隐私。同时,它提供...
2. **数据库连接**:James支持多种数据库存储用户信息,如MySQL、PostgreSQL等。需要配置相应的数据库连接参数,如URL、用户名、密码等。 3. **用户管理**:James提供了用户账户的管理功能,可以使用文件系统、LDAP...
此外,James 还提供了灵活的配置选项,支持不同的数据存储方式,包括文件系统、数据库等。由于其稳定性、高度可配置性以及开放源代码的特性,James 在众多项目中得到了广泛应用。 目前,James 的常用版本为 2.1,但...