- 浏览: 452533 次
- 性别:
- 来自: 陕西.西安
文章分类
最新评论
-
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 23491AKKA 是一款基于actor模型实现的 并发处理框架。基 ... -
Ant 集成 junit 自动生成测试报告
2013-08-28 08:56 989在当下Maven 统治大片江山,Gradle后起之秀的情况 ... -
很有用的测试工具
2013-08-27 11:21 6791. findbugs findbugs是一种静态 ... -
java 之 JNI
2013-08-27 11:06 1644前言: 在查看java socket实现代码时最终发现其 ... -
HSQLDB实现学习笔记-数据库服务器连接
2013-08-27 10:27 12251 数据库服务器连接 主要用于描述客户端是如何与 ... -
HSQLDB实现学习笔记-数据库服务器创建
2013-08-27 10:16 2942前言: HSQLDB作为一个纯java实现的开源数据库, ... -
反射实现 AOP 动态代理模式(Spring AOP 的实现 原理)(转)2
2011-04-13 14:01 11651package sinosoft.dj.aop ... -
反射实现 AOP 动态代理模式(Spring AOP 的实现 原理)(转)
2011-04-13 13:49 825转自: http://www.blogjava.net/Do ... -
Sun Remote Procedure Call
2011-04-05 15:45 1299Most network programming is ... -
pushlet
2011-03-31 22:54 836http://baike.baidu.com/view/246 ... -
Comet:基于 HTTP 长连接的“服务器推”技术(转)
2011-03-31 22:39 843http://www.ibm.com/developerwor ... -
冒泡排序
2011-03-30 16:03 960package com.datastruct.sort; ... -
快速排序
2011-03-30 16:02 908package com.datastruct.sort; ... -
Cookie
2011-03-30 14:11 7551、登录www.iteye.com 输入用户名,密 ... -
OCP秘笈
2011-03-29 22:19 704http://oracle.chinaitlab.com/Sp ... -
HashCode计算方法
2011-03-29 17:34 924Returns a hash code for this ... -
Merkle-Hellman背包算法
2011-03-23 17:54 1079转自:http://baike.baidu.com/view/ ... -
Android webService访问实例
2011-03-23 13:09 4241参考网上的例子实现一个简单的天气查看功能。 界面包含一个按钮, ... -
Android 源码查看
2011-03-22 14:10 1503在网上看了几个关于源码查看的方法但是都不是很清晰,此文列出 ... -
在Android中解析XML数据
2011-03-21 22:20 926http://www.williamhua.com/2009/ ...
相关推荐
Apache James邮件服务器用户信息的数据库存储问题.doc
NULL 博文链接:https://xieruilin.iteye.com/blog/1567317
James提供了比较完善的配置方案,尤其是关于邮件内容存储和用户信息存储部分,可以选择在文件、数据库或其他介质中保存。James性能稳定、可配置性强,还是开源项目,所有源代码不存在版权问题,因此,James在项目中...
james实现邮件服务器 全面讲解安装 配置过程 实现局域网以及外网收发邮件 数据库存储用户及邮件配置等
jwma(Java Webmail应用... 它适用于以mbox或maildir格式存储的电子邮件,或存储在derby数据库中的电子邮件; 它已经通过dovecot.james和exim4进行了测试。 有关更多详细信息,请参见http://jwma.sourceforge.net/。
名称(必填),电子邮件,徽标(最小100×100),网站 员工数据库表包含以下字段:名(必填),姓(必填),公司(公司的外键),电子邮件,电话 使用数据库迁移在上面创建那些模式 将公司徽标存储在storage / ...
感谢 Priyesh Patel 的 connectbot-colors-solarized 存储库: : 安装 您的设备需要植根。 以某种方式将这些 SQL 文件放到你的 android 设备上(复制到 SD 卡,通过电子邮件发送给你自己,不管怎样)。 打开终端...
通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...
通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...
将用户的电子邮件地址与Nextcloud存储的地址同步。 入门 SSH进入您的服务器。 进入Nextcloud安装的apps文件夹,例如/ var / www / nextcloud / apps 。 Git克隆此项目: git clone ...
Chronicle 是一个超低延迟、高吞吐、持久化的消息和事件驱动的内存数据库,延迟只有16纳秒以及支持每秒钟 500-2000 万消息/记录。 google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 ...
Chronicle 是一个超低延迟、高吞吐、持久化的消息和事件驱动的内存数据库,延迟只有16纳秒以及支持每秒钟 500-2000 万消息/记录。 google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 ...
Chronicle 是一个超低延迟、高吞吐、持久化的消息和事件驱动的内存数据库,延迟只有16纳秒以及支持每秒钟 500-2000 万消息/记录。 google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 ...
Chronicle 是一个超低延迟、高吞吐、持久化的消息和事件驱动的内存数据库,延迟只有16纳秒以及支持每秒钟 500-2000 万消息/记录。 google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 ...