码迷,mamicode.com
首页 > 编程语言 > 详细

Apache James 使用Java程序创建与删除用户

时间:2017-12-05 11:55:40      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:删除用户   邮件管理   时间   中文   读取   tcl   指令   bsp   quit   

最近在做公司项目管理的邮件系统,因此查询了大量资料,搭建了Apache James 2.3.2 的邮件管理系统。

搭建好后,要对细节流程进行代码编程,首先想到的第一个问题:增加与删除用户。

ApacheJames工具通常使用telnet客户端在Cmd命令窗口下进行用户的添加与删除以及修改密码等操作,考虑到需要将功能整合到SSH框架中,就需要采用eclipse的环境下进行用户操作。

在CSDN上看到了一篇文章,并对其代码进行了修改。完成在eclipse环境下使用Cmd命令操作telnet客户端,代码如下:

 

package com.yyh.StudyMail;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.SocketException;

import org.apache.commons.net.telnet.TelnetClient;

public class SHAPassword {

    public static void main(String[] args) {
        try {
            TelnetClient telnetClient = new TelnetClient("vt200"); // 指明Telnet终端类型,否则会返回来的数据中文会乱码
            telnetClient.setDefaultTimeout(5000); // socket延迟时间:5000ms
            telnetClient.connect("172.168.0.193", 4555); // 建立一个连接,默认端口是23
            InputStream inputStream = telnetClient.getInputStream(); // 读取命令的流
            PrintStream pStream = new PrintStream(telnetClient.getOutputStream()); // 写命令的流
            byte[] b = new byte[1024];
            int size;
            StringBuffer sBuffer = new StringBuffer(300);
            StringBuffer rBuffer = new StringBuffer(300);
            StringBuffer tBuffer = new StringBuffer(300);
            StringBuffer uBuffer = new StringBuffer(300);

            while (true) { // 读取Server返回来的数据,直到读到登陆标识,这个时候认为可以输入用户名
                size = inputStream.read(b);
                if (-1 != size) {
                    sBuffer.append(new String(b, 0, size));
                    if (sBuffer.toString().trim().endsWith(":")) {
                        break;
                    }
                }
            }
            // 第一步 输入邮件系统用户名
            System.out.println(sBuffer.toString());
            System.out.println("1");
            pStream.println("root"); // 写命令
            System.out.println("2");
            pStream.flush(); // 将命令发送到telnet Server
            System.out.println("3");

            while (true) { // 读取Server返回来的数据,直到读到登陆标识,这个时候认为可以输入用户名
                size = inputStream.read(b);
                if (-1 != size) {
                    rBuffer.append(new String(b, 0, size));
                    if (rBuffer.toString().trim().endsWith("Password:")) {
                        break;
                    }
                }
            }

            // 第二步 输入邮件系统密码
            System.out.println(rBuffer.toString());
            pStream.println("root"); // 写命令
            System.out.println("1");
            pStream.flush(); // 将命令发送到telnet Server
            System.out.println("2");

            while (true) { // 读取Server返回来的数据,直到读到登陆标识,这个时候认为可以输入用户名
                size = inputStream.read(b);
                if (-1 != size) {
                    tBuffer.append(new String(b, 0, size));
                    if (tBuffer.toString().trim().endsWith("commands")) {
                        break;
                    }
                }
            }
            System.out.println(tBuffer.toString());

            // 第三步 输入添加用户指令
            pStream.println("adduser test1 test1"); // 写命令
            System.out.println("1");
            pStream.flush(); // 将命令发送到telnet Server
            System.out.println("2");

            while (true) { // 读取Server返回来的数据,直到读到登陆标识,这个时候认为可以输入用户名
                size = inputStream.read(b);
                if (-1 != size) {
                    uBuffer.append(new String(b, 0, size));
                    if (uBuffer.toString().trim().endsWith("added")) {
                        break;
                    }
                }
            }
            System.out.println(uBuffer.toString());

            // 第四步 退出telnet命令界面
            pStream.println("quit"); // 写命令
            System.out.println("1");
            pStream.flush(); // 将命令发送到telnet Server
            System.out.println("2");

            if (null != pStream) {
                pStream.close();
            }
            telnetClient.disconnect();
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

其中有一个空指针的报错还未debug,增加用户功能实现,代码尚未优化。

欢迎留言交流

Apache James 使用Java程序创建与删除用户

标签:删除用户   邮件管理   时间   中文   读取   tcl   指令   bsp   quit   

原文地址:http://www.cnblogs.com/PacinoY/p/7985749.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!