- 浏览: 485945 次
- 性别:
- 来自: 武汉
最新评论
-
zyzyzy123:
请问有工程吗,我现在正在实现打电话的功能,但是一直不通,怀疑是 ...
实用的java 串口通信程序 -
wuhaitong:
引用[img][/img][*][url][/url] ...
jbpm -
迷糊_le:
maven命令, 蛮好的,谢谢
maven eclipse -
Wuaner:
不错的文章 , 谢谢分享!
Hadoop -
yuqihengsheng:
strong 很细
HighLighter
关键字: apache james 实践
Apache James 简称 James, 是 Java Apache Mail Enterprise Server的缩写。James 是100%基于Java的电子邮件服务器。它是一种独立的邮件服务器,并提供了一个完整的电子邮件解决方案,用来收、发电子邮件。
本文不赘述James服务器的参数细节,这个以后有机会再详细讨论,这里先从服务器搭建开始,用搭建的服务器收、发电子邮件来熟悉一下Apache James。本人也是新手,希望能得到各位高手的指点,使大家能悟到进阶的方向。
1。请下载安装JDK,并设置好其环境变量:JAVA_HOME=…… 、PATH=…… 、CLASSPATH=…… Eclipse 3.4 是目前的最新版本,可以从http://www.eclipse.org/下载。
2。请下载JMail API、JAF API,可以在www.java.sun.com找到他们,找不到也不要紧,本文附件示例代码免费提供一份(^_^)。
3。Apache James 的官方网站为:http://james.apache.org/,当前 Server 的最新版为 2.3.1版. 安装非常简单,下载后得到james-binary-2.3.1.zip 文件,解压后即可。这里假设解压到D盘(D:\james-2.3.1),目录结构如下:
D:\james-2.3.1
|--- apps
|--- bin
|
…………
4。启动 James 服务器
双击或在命令行下执行D:\james-2.3.1\bin 目录下的 run.bat文件,即可启动 James 服务器。
启动后能在控制台看到如下信息,说明启动成功:
- Using PHOENIX_HOME: D:\james-2.3.1
- Using PHOENIX_TMPDIR: D:\james-2.3.1\temp
- Using JAVA_HOME: D:\Java\jdk1.6.0_10
- Phoenix 4.2
- James Mail Server 2.3.1
- Remote Manager Service started plain:4555
- POP3 Service started plain:110
- SMTP Service started plain:25
- NNTP Service started plain:119
- FetchMail Disabled
Using PHOENIX_HOME: D:\james-2.3.1
Using PHOENIX_TMPDIR: D:\james-2.3.1\temp
Using JAVA_HOME: D:\Java\jdk1.6.0_10
Phoenix 4.2
James Mail Server 2.3.1
Remote Manager Service started plain:4555
POP3 Service started plain:110
SMTP Service started plain:25
NNTP Service started plain:119
FetchMail Disabled
要关闭 James 服务,请使用 Ctrl + C
说明:启动前请确保您的JDK环境变量如JAVA_HOME等已经设置好;James 启动时,其SMTP 服务默认在 25 端口启动,POP3 服务默认在 110 端口启动, NNTP 服务默认在 119 端口启动, 请确保这些端口未被占用。比如本系统下就已经安装了Microsoft的 SMTP 服务,造成 James无法启动,解决方法为:开始--->设置--->控制面板--->管理工具--->服务,打开后找到“Simple Mail Transport Protocol(SMTP)”服务项,关闭即可。
5。配置服务
服务器启动后会在本机配置一个默认的服务,这可以用来在本机上本服务器范围内收发邮件,但是邮件发不到163等外网邮箱。我们这里关注的重点就是配置一个能发到外网如163这样的邮箱的邮件,这样才有价值。不过由于本人是在本机上测试,一时不能获取公司的域名参数,无法测试接收外网邮箱(如163)的邮件,见晾,不过做法都是一样的,至少我们可以向外网邮箱发送邮件,局域网内可以收、发邮件。
打开D:\james-2.3.1\apps\james\SAR-INF 下的 config.xml 文件,初次启动James之前,不会有这个文件,只有当James服务启动一次之后才自动构件该文件。
找到
- ……
- <postmaster>Postmaster@localhost</postmaster>
- ……
- <servernames autodetect="true" autodetectIP="true">
- <servername>localhost</servername>
- </servernames>
- ……
……
<postmaster>Postmaster@localhost</postmaster>
……
<servernames autodetect="true" autodetectIP="true">
<servername>localhost</servername>
</servernames>
……
把localhost该成你自己想要的邮箱域名, 把自动探测IP属性设置为“false”这里假设改成 zhaipuhong.com 如果开了一个帐号 zph ,那么他的邮件地址就是 zph@zhaipuhong.com (^_^)修改结果如下:
- ……
- <postmaster>Postmaster@zhaipuhong.com</postmaster>
- ……
- <servernames autodetect="false" autodetectIP="false">
- <servername>zhaipuhong.com</servername>
- </servernames>
- ……
……
<postmaster>Postmaster@zhaipuhong.com</postmaster>
……
<servernames autodetect="false" autodetectIP="false">
<servername>zhaipuhong.com</servername>
</servernames>
……
找到
- <mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">
- <processor> relay-denied </processor>
- <notice>550 - Requested action not taken: relaying denied</notice>
- </mailet>
<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">
<processor> relay-denied </processor>
<notice>550 - Requested action not taken: relaying denied</notice>
</mailet>
将其注释,结果如下:
- <!--mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">
- <processor> relay-denied </processor>
- <notice>550 - Requested action not taken: relaying denied</notice>
- </mailet-->
<!--mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">
<processor> relay-denied </processor>
<notice>550 - Requested action not taken: relaying denied</notice>
</mailet-->
找到下面元素,去掉其注释
- <authRequired>true</authRequired>
<authRequired>true</authRequired>
这样邮箱访问需要帐号验证,你不希望别人用你的帐号收发消息吧……^_^
如此,James服务配置已经完成。
6。创建邮件帐号
创建邮件帐号后,就可以用来收发邮件了。James的账号管理是通过基于Telnet客户机的远程管理器,这点颇为不爽,尤其是我的操作系统下的命令行控制台是不显示telnet命令输入字符的,经常出错。
现在进入命令行控制台,在telnet localhsot 4555 进入James管理器,操作如下:
- C:\Documents and Settings\db2admin>telnet localhost 4555
C:\Documents and Settings\db2admin>telnet localhost 4555
将进入
- JAMES Remote Administration Tool 2.3.1 Please enter your login and password Login id:
JAMES Remote Administration Tool 2.3.1 Please enter your login and password Login id:
默认的登陆id 为root 密码也为 root ,登陆成功后结果如下:
- JAMES Remote Administration Tool 2.3.1
- Please enter your login and password
- Login id:
- Password:
- Welcome root. HELP for a list of commands
JAMES Remote Administration Tool 2.3.1
Please enter your login and password
Login id:
Password:
Welcome root. HELP for a list of commands
创建新用户的命令是:adduser username password
这里创建了两个账户来作为演示使用: zhaipuhong/zhangpuhong ; zph/zph
说明:你可以输入help来获取命令帮助
- help display this help 显示帮助信息
- listusers display existing accounts 显示现有账户
- countusers display the number of existing accounts 显示现有账户数量
- adduser [username] [password] add a new user 添加一个新用户
- verify [username] verify if specified user exist 核实指定用户是否存在
- deluser [username] delete existing user 删除存在的用户
- setpassword [username] [password] sets a user's password 设置用户密码
- setalias [user] [alias] locally forwards all email for 'user' to 'alias' 设置邮箱别名
- showalias [username] shows a user's current email alias 显示别名
- unsetalias [user] unsets an alias for 'user' 删除用户别名
- setforwarding [username] [emailaddress] forwards a user's email to another email address 转发用户的电子邮件地址到另一个电子邮件地址
- showforwarding [username] shows a user's current email forwarding 显示用户的当前邮件转发
- unsetforwarding [username] emoves a forward 删除转发
- user [repositoryname] change to another user repository 改变另一个用户库
- shutdown kills the current JVM (convenient when James is run as a daemon)关闭当前的服务
- quit close connection 关闭连接
help display this help 显示帮助信息
listusers display existing accounts 显示现有账户
countusers display the number of existing accounts 显示现有账户数量
adduser [username] [password] add a new user 添加一个新用户
verify [username] verify if specified user exist 核实指定用户是否存在
deluser [username] delete existing user 删除存在的用户
setpassword [username] [password] sets a user's password 设置用户密码
setalias [user] [alias] locally forwards all email for 'user' to 'alias' 设置邮箱别名
showalias [username] shows a user's current email alias 显示别名
unsetalias [user] unsets an alias for 'user' 删除用户别名
setforwarding [username] [emailaddress] forwards a user's email to another email address 转发用户的电子邮件地址到另一个电子邮件地址
showforwarding [username] shows a user's current email forwarding 显示用户的当前邮件转发
unsetforwarding [username] emoves a forward 删除转发
user [repositoryname] change to another user repository 改变另一个用户库
shutdown kills the current JVM (convenient when James is run as a daemon)关闭当前的服务
quit close connection 关闭连接
账号创建成功后,使用quit退出管理器。现在我们可以开始部署我们的JMail应用了。
7。用James收发邮件
现在我们来写两个简单的程序来体验一下如何使用James收发邮件。请注意,示例程序是通用的。关于如何用JMail API收发邮件,这里不详细介绍,如果还没有接触过请参考一下我之前的文章:
http://zhaipuhong.iteye.com/admin/blogs/213005
关于接受邮件部分,我们在代码中通过注释来描述。另外我们来回忆一下上述步骤配置James服务器的参数:
1。smtp 服务器:192.168.1.98或者localhost 192.168.1.98是我的局域网IP,由于我James服务就装在我的机器上,所以我可以用localhost
2。两个邮件帐号:zhaipuhong/zhaipuhong 对应邮箱地址: zhaipuhong@zhaipuhong.com
zph/zph 对应邮箱地址: zph@zhaipuhong.com
注意:邮箱域名我们配置的是zhaipuhong.com
示例程序:
- package com.zhaipuhong.j2ee.jmail;
- import java.io.IOException;
- import java.util.Properties;
- import javax.mail.Authenticator;
- import javax.mail.Folder;
- import javax.mail.Message;
- import javax.mail.MessagingException;
- import javax.mail.PasswordAuthentication;
- import javax.mail.Session;
- import javax.mail.Store;
- import javax.mail.Transport;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeMessage;
- import javax.mail.internet.MimeUtility;
- public class HelloJMail {
- //发送邮件
- public static void sendMail() {
- //String host = "192.168.1.98"; // 指定的smtp服务器,本机的局域网IP
- String host = "localhost"; // 本机smtp服务器
- //String host = "smtp.163.com"; // 163的smtp服务器
- String from = "zhaipuhong@zhaipuhong.com"; // 邮件发送人的邮件地址
- String to = "zph@zhaipuhong.com"; // 邮件接收人的邮件地址
- final String username = "zhaipuhong"; //发件人的邮件帐户
- final String password = "zhaipuhong"; //发件人的邮件密码
- // 创建Properties 对象
- Properties props = System.getProperties();
- // 添加smtp服务器属性
- props.put("mail.smtp.host", host);
- props.put("mail.smtp.auth", "true");
- // 创建邮件会话
- Session session = Session.getDefaultInstance(props, new Authenticator(){
- @Override
- public PasswordAuthentication getPasswordAuthentication() {
- return new PasswordAuthentication(username, password);
- }
- });
- try {
- // 定义邮件信息
- MimeMessage message = new MimeMessage(session);
- message.setFrom(new InternetAddress(from));
- message.addRecipient(Message.RecipientType.TO, new InternetAddress(
- to));
- //message.setSubject(transferChinese("我有自己的邮件服务器了"));
- message.setSubject("I hava my own mail server");
- message.setText("From now, you have your own mail server, congratulation!");
- // 发送消息
- session.getTransport("smtp").send(message);
- //Transport.send(message); //也可以这样创建Transport对象发送
- System.out.println("SendMail Process Over!");
- } catch (MessagingException e) {
- e.printStackTrace();
- }
- }
- //接受邮件
- public static void getMail(){
- String host = "localhost";
- final String username = "zph";
- final String password = "zph";
- // 创建Properties 对象
- Properties props = new Properties();
- // 创建邮件会话
- Session session = Session.getDefaultInstance(props, new Authenticator(){
- @Override
- public PasswordAuthentication getPasswordAuthentication() {
- return new PasswordAuthentication(username, password);
- }
- });
- try {
- // 获取邮箱的pop3存储
- Store store = session.getStore("pop3");
- store.connect(host, username, password);
- // 获取inbox文件
- Folder folder = store.getFolder("INBOX");
- folder.open(Folder.READ_ONLY); //打开,打开后才能读取邮件信息
- // 获取邮件消息
- Message message[] = folder.getMessages();
- for (int i=0, n=message.length; i<n; i++) {
- System.out.println(i + ": " + message[i].getFrom()[0]
- + "\t" + message[i].getSubject());
- try {
- message[i].writeTo(System.out);
- } catch (IOException e) {
- e.printStackTrace();
- }
发表评论
-
安装和使用memcached
2014-04-16 16:24 644如何将 memcached 融入到 ... -
applicationContext.xml
2013-08-09 09:05 948<?xml version="1.0&quo ... -
注释驱动的 Spring cache 缓存介绍
2013-08-08 07:04 665概述 Spring 3.1 引入了激动人心的基于注释(an ... -
Spring2.5 Annotations
2013-08-08 06:33 862完成setXxxx功能,即配置文件的 <propert ... -
Spring基于注解的缓存配置--EHCache AND OSCache
2013-08-07 23:21 1032本文将构建一个普通工程来说明spring注解缓存的使用方式, ... -
Ehcache 整合Spring 使用页面、对象缓存
2013-08-07 22:51 899Ehcache 整合Spring 使用页面、对象缓存 ... -
javassist教程和示例
2013-05-18 08:57 2014Javassist是一个执行字节 ... -
ZooKeeper官方文档
2013-05-16 17:09 1563介绍(源自ZooKeeper官方文档) 学习HBase过程 ... -
ZooKeeper -例子
2013-05-16 17:08 1217ZooKeeper ZooKeepe ... -
Spring整合Hessian访问远程服务
2013-05-15 13:44 861Spring整合Hessian访问远程服务 目录 1.1 ... -
redis
2013-05-14 11:44 773redis是一个key-value存储系统。和Memcach ... -
spring 资源访问
2013-05-13 08:26 1006spring在java基础上封装了资源访问,简单易用。 R ... -
ZooKeeper——入门
2013-05-08 16:12 913ZooKeeper——入门 博客分类: ZooK ... -
分布式服务框架 Zookeeper -- 管理分布式环境中的数据(IBM)
2013-05-08 14:07 788安装和配置详解 本文 ... -
分布式协调服务---Zookeeper
2013-05-08 14:05 7791、Zookeeper overview Zookee ... -
Hibernate
2013-03-28 13:04 927一、简述 Hibernate 和 JD ... -
Apache+Tomcat集群配置详解
2013-02-01 10:52 898Apache + Tomcat集群配置详解(1) 一、 ... -
Apache+Jboss集群基于反向代理的负载均衡
2013-02-01 10:40 2498假设三台机器IP分别为172.29.128.100、172. ... -
spring + ibatis 多数据源事务(分布式事务)管理配置方法
2012-12-17 15:18 1270spring + ibatis 多数据源事务(分布式事务 ... -
Hessian序列化不设SerializerFactory性能问题
2012-10-31 09:47 1504Hessian序列化不设SerializerFactor ...
相关推荐
### Apache James 使用入门详解 #### 一、Apache James 概述 Apache James 是一款由 Apache 组织开发的开源邮件服务器软件,它完全基于 Java 技术构建,支持多种邮件协议,包括 SMTP(Simple Mail Transfer ...
Apache James邮件服务器是一款开源的、基于Java的全功能邮件服务器,它支持SMTP、POP3和IMAP协议,为企业和个人提供了一种可靠且可扩展的邮件处理解决方案。在本项目中,我们将探讨如何利用Apache James来实现邮件的...
Apache James Server是一个开源的邮件服务器解决方案,它提供了邮件传输代理(MTA)、用户代理(MUA)以及相关的邮件服务功能。在了解Apache James Server 3的配置之前,我们需要首先了解它的一些核心概念和组件。 ...
### Apache James 3.0 实战安装指南 #### 一、Apache James简介 Apache James (Java Apache Mail Enterprise Server) 是一款由Apache基金会维护的开源邮件服务器解决方案,它完全基于Java语言编写,支持多种邮件...
"Apache James专题" Apache James是一款基于Java的开源邮件服务器软件,提供了丰富的邮件处理功能和配置选项。本文将对Apache James的安装、配置和应用进行详细介绍。 Apache James的安装 在安装Apache James之前...
知识点:Apache James 邮件服务器的架构与功能 Apache James 是一款由Apache软件基金会维护的开源邮件服务器,自1999年开始开发,并于2002年成为顶级项目(Top-Level Project, TLP)。它是一款100%纯Java编写的邮件...
Apache James 是一款开源的邮件服务器软件,主要用于处理电子邮件的接收、发送、存储等任务。本文将详细介绍如何在Linux CentOS 5.1环境下安装配置Apache James邮件服务器。 首先,我们需要准备以下环境: 1. 操作...
Apache James邮件服务器用户信息的数据库存储问题.doc
在IT领域,构建自己的邮件系统是一项复杂而有挑战性的任务,但通过Apache James Mailserver和Claros inTouch Webmail的组合,我们可以实现一个自托管、功能完善的电子邮件解决方案。以下是对这个搭建过程的详细解析...
标题中的"mailServer Apache James / sendmail / qmail"提到了三个不同的邮件服务器软件,它们在IT领域中扮演着重要角色。Apache James是基于Java的开源邮件服务器,sendmail和qmail则是历史悠久的Unix/Linux环境下...
4. 增加修改账号密码的功能,配合Apache James邮件服务器使用,密码加密采用SHA 5. 修复Notes中的一个缺陷,由于MySQL不支持Timestamp空值导致出错的问题 安装说明: 1. Intouch2和James共享同一个数据库 2. 数据库...
apache james(邮件服务器)配置.经过配置可以向163、qq等邮箱发送邮件
Apache James是开源的邮件服务器项目,它基于Java技术构建,提供了全面的邮件服务功能,包括邮件接收、发送、存储以及管理。"apache-james-2.3.2.jar"是该项目的一个版本,此版本为2.3.2,通常包含了运行Apache ...
Apache James是一款开源的企业级邮件服务器,它提供了丰富的功能,包括邮件传输、存储、过滤和管理。在Apache James 3.0版本中,它加强了对 Lightweight Directory Access Protocol (LDAP) 的支持,使得用户能够利用...
Apache James邮件服务器是一款开源的邮件服务器软件,基于Java平台,实现了SMTP、POP3和IMAP4等邮件协议,为企业和个人提供了稳定、可扩展的邮件服务解决方案。本篇将深入探讨如何配置Apache James邮件服务器。 ...
This is an AUTOMATED NIGHTLY TEST BUILD for Apache JAMES. Such nightly builds are automatically generated from the current source repository for testing. Assuming that they even compile, these ...
刚进个小公司就让我搭建个服务器,研究了一个星期,总算是搞定了,网上找了很多资料,看了很久也研究了很久,最后总结了下...搭建成功...收发邮件都没问题...不过如果是收邮件的话必须要有注册的域名,也就是公网的域名才...
自己爬取的apache james 邮件服务器的英文documention,作为本地使用,结构清晰 James components About James Server Mailets Quick Start Mailet API Basic Mailet Toolkit Standard Mailets Crypto Mailets ...
### Apache James 邮件服务器搭建与应用 #### 一、Apache James 简介 Apache James 是一款完全由 Java 编写的邮件服务器,能够提供完整的邮件收发服务。它支持标准的邮件协议,包括 SMTP(简单邮件传输协议)、...