用 Apache James 搭建邮件服务器来收发邮件实践.docx

上传人:b****4 文档编号:4925753 上传时间:2022-12-11 格式:DOCX 页数:13 大小:21.12KB
下载 相关 举报
用 Apache James 搭建邮件服务器来收发邮件实践.docx_第1页
第1页 / 共13页
用 Apache James 搭建邮件服务器来收发邮件实践.docx_第2页
第2页 / 共13页
用 Apache James 搭建邮件服务器来收发邮件实践.docx_第3页
第3页 / 共13页
用 Apache James 搭建邮件服务器来收发邮件实践.docx_第4页
第4页 / 共13页
用 Apache James 搭建邮件服务器来收发邮件实践.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

用 Apache James 搭建邮件服务器来收发邮件实践.docx

《用 Apache James 搭建邮件服务器来收发邮件实践.docx》由会员分享,可在线阅读,更多相关《用 Apache James 搭建邮件服务器来收发邮件实践.docx(13页珍藏版)》请在冰豆网上搜索。

用 Apache James 搭建邮件服务器来收发邮件实践.docx

用ApacheJames搭建邮件服务器来收发邮件实践

用ApacheJames搭建邮件服务器来收发邮件实践

  ApacheJames简称James,是JavaApacheMailEnterpriseServer的缩写。

James是100%基于Java的电子邮件服务器。

它是一种独立的邮件服务器,并提供了一个完整的电子邮件解决方案,用来收、发电子邮件。

 

       本文不赘述James服务器的参数细节,这个以后有机会再详细讨论,这里先从服务器搭建开始,用搭建的服务器收、发电子邮件来熟悉一下ApacheJames。

本人也是新手,希望能得到各位高手的指点,使大家能悟到进阶的方向。

 

      开始之前,先声明一下本文操作的系统环境:

      1.JDK6u10b

      2.JMailAPIv1.4.2

      3.JAFAPIv1.1(JavaBeanActivationFramework)

      4.ApacheJames2.3.1

      5.Eclipse3.4forJ2EEDevelopers

      6.Windows2000Serversp4

 

    

       

       1。

请下载安装JDK,并设置好其环境变量:

JAVA_HOME=……、PATH=……、CLASSPATH=……Eclipse3.4是目前的最新版本,可以从http:

//www.eclipse.org/下载。

      

       2。

请下载JMailAPI、JAFAPI,可以在找到他们,找不到也不要紧,本文附件示例代码免费提供一份(^_^)。

 

      3。

ApacheJames的官方网站为:

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服务器。

 

      启动后能在控制台看到如下信息,说明启动成功:

Java代码 

∙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无法启动,解决方法为:

开始--->设置--->控制面板--->管理工具--->服务,打开后找到“SimpleMailTransportProtocol(SMTP)”服务项,关闭即可。

 

     

      5。

配置服务

       服务器启动后会在本机配置一个默认的服务,这可以用来在本机上本服务器范围内收发邮件,但是邮件发不到163等外网邮箱。

我们这里关注的重点就是配置一个能发到外网如163这样的邮箱的邮件,这样才有价值。

不过由于本人是在本机上测试,一时不能获取公司的域名参数,无法测试接收外网邮箱(如163)的邮件,见晾,不过做法都是一样的,至少我们可以向外网邮箱发送邮件,局域网内可以收、发邮件。

      

       打开D:

\james-2.3.1\apps\james\SAR-INF下的config.xml文件,初次启动James之前,不会有这个文件,只有当James服务启动一次之后才自动构件该文件。

      

       找到

Java代码 

∙……   

Postmaster@localhost   

∙……   

   

∙    localhost   

∙   

∙……   

  

  

       把localhost该成你自己想要的邮箱域名, 把自动探测IP属性设置为“false”这里假设改成 如果开了一个帐号zph,那么他的邮件地址就是 zph@ (^_^)修改结果如下:

 

Xml代码 

∙……   

Postmaster@   

∙……   

   

∙       

∙   

∙……  

   

       找到

Xml代码 

   

∙     relay-denied    

∙    550 - Requested action not taken:

 relaying denied   

∙  

   

       将其注释,结果如下:

Xml代码 

--mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">   

∙     relay-denied    

∙    550 - Requested action not taken:

 relaying denied   

∙  

    

        找到下面元素,去掉其注释

Xml代码 

true  

  

 

        这样邮箱访问需要帐号验证,你不希望别人用你的帐号收发消息吧……^_^

        

        如此,James服务配置已经完成。

 

 

        6。

创建邮件帐号

        创建邮件帐号后,就可以用来收发邮件了。

James的账号管理是通过基于Telnet客户机的远程管理器,这点颇为不爽,尤其是我的操作系统下的命令行控制台是不显示telnet命令输入字符的,经常出错。

 

        现在进入命令行控制台,在telnetlocalhsot4555进入James管理器,操作如下:

C代码 

∙C:

\Documents and Settings\db2admin>telnet localhost 4555   

  

 

       将进入

C代码 

∙JAMES Remote Administration Tool 2.3.1 Please enter your login and password Login id:

  

   

 

       默认的登陆id为root密码也为root,登陆成功后结果如下:

C代码 

∙JAMES Remote Administration Tool 2.3.1   

∙Please enter your login and password   

∙Login id:

   

∙Password:

   

∙Welcome root. HELP for a list of commands    

 

      创建新用户的命令是:

adduserusernamepassword

    这里创建了两个账户来作为演示使用:

zhaipuhong/zhangpuhong ;     zph/zph

 

     说明:

你可以输入help来获取命令帮助

C代码 

∙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收发邮件。

请注意,示例程序是通用的。

关于如何用JMailAPI收发邮件,这里不详细介绍,如果还没有接触过请参考一下我之前的文章:

     

     

     关于接受邮件部分,我们在代码中通过注释来描述。

另外我们来回忆一下上述步骤配置James服务器的参数:

     1。

smtp服务器:

192.168.1.98或者localhost    192.168.1.98是我的局域网IP,由于我James服务就装在我的机器上,所以我可以用localhost

     2。

两个邮件帐号:

zhaipuhong/zhaipuhong  对应邮箱地址:

zhaipuhong@

                               zph/zph                           对应邮箱地址:

zph@

      注意:

邮箱域名我们配置的是

 

     示例程序:

 

Java代码

∙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 = ""; // 163的smtp服务器  

∙        String from = "zhaipuhong@"; // 邮件发送人的邮件地址  

∙        String to = "zph@"; // 邮件接收人的邮件地址  

∙        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

∙                System.out.println(i + ":

 " + message[i].getFrom()[0]  

∙                                               + "\t" + message[i].getSubject());  

∙                try {  

∙                    message[i].writeTo(System.out);  

∙                } catch (IOException e) {  

∙                    e.printStackTrace();  

∙                }  

∙  

∙            }  

∙  

∙            

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1