1. 程式人生 > >Apache James 使用Java程序創建與刪除用戶

Apache James 使用Java程序創建與刪除用戶

添加用戶 搭建 tput nts 整合 看到了 add input 以及

最近在做公司項目管理的郵件系統,因此查詢了大量資料,搭建了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程序創建與刪除用戶