Java实现创建outlook邮箱账号
现在我们开始。。。。。。话说从研究这个功能到实现它前后大致花了一周的时间,毕竟用Java实现这个不是一件简单的事情,谁让EXCHANGE和.NET更亲呢。一开始想了两个方案:
至于SSH2和PowerShell是啥,这里就不重复叙述了,感兴趣的同学可以百度了解下。
PowerShell学习资料地址:http://www.pstips.net/powershell-online-tutorials/
下面直接上步骤吧
1:SSH2连接远程服务器这个很简单,下载freesshd软件,按照教程安装就行,安装完成之后使用putty工具连接测试。
freesshd下载地址:
http://www.freesshd.com/?ctt=download
freesshd安装参考百度经验的文章:
https://jingyan.baidu.com/article/f7ff0bfc1ebd322e27bb1344.html
putty安装地址:
https://pan.baidu.com/s/1dG1L1F7密码:gwou
putty测试连接成功后,可以编写Java代码连接了,该过程需要ganymed-ssh2-build210.jar的支持,所以需要添加maven坐标
连接代码案例
import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.Session;
/** * ssh登录远程服务器 * @return */ public boolean login(){ boolean result = false; try { conn = new Connection(ip,port); conn.connect();//连接 if(!conn.authenticateWithPassword(userName, userPwd)){ logger.error("通过SSH2登录OUTLOOK邮件服务器错误,验证失败"); conn.close(); return result; } result = true; } catch (IOException e) { logger.error("通过SSH2登录OUTLOOK邮件服务器异常",e); } return result; } /** * 退出远程服务器 * @return */ public void exitConnect(){ if(conn != null){ conn.close(); } }2:Powershell脚本编写与测试
这边提供一个get-mailbox方法的脚本getEmail.ps1,用于获取员工的邮箱信息
set-executionpolicy remotesigned $user = $args[0] $password = ConvertTo-SecureString -String $args[1] -AsPlainText -Force $credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $user,$password $session = New-PSSession -Authentication Kerberos -Credential $credential -ConfigurationName microsoft.exchange -ConnectionUri http://XXXXXXXX(你的邮件服务器)/powershell Import-PSSession $session get-mailbox $args[2]
$args[i]代表给PS脚本传递的参数,$args[0]是outlook管理员的用户名,$args[1]是管理员登录的密码,$args[2]是需要查询的AD账号。
测试案例:
测试结果:
接下来只要将PS脚本中的get-mailbox $args[2]方法替换成Enable-Mailbox $args[2] -Database $args[3]就行,$args[2]代表员工的AD账号,$args[3]代表员工的邮箱创建在哪个数据库中。
3:Java通过ssh2调用命令执行PowerShell脚本/** * 执行远程服务器上的PowerShell脚本 * @param powerShellFile powerShell的脚本文件 * @param powerShellParams powerShell的脚本文件的参数 * @return session对象,包含返回结果 */ public Session executePowerShell(String powerShellFile,String powerShellParams){ Session session = null; String command = "cmd /c C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe "+powerShellFile + " " + powerShellParams; try{ if(login()){ session = conn.openSession(); session.execCommand(command); } }catch (IOException e){ logger.error("执行远程服务器上的PowerShell脚本异常,脚本地址:"+powerShellFile,e); } return session; }
session = outLookOperationService.executePowerShell(powerShellFile,powerShellParams); //等待1分钟处理时间,1分钟后取值 Thread.sleep(60000); InputStream stdout = session.getStdout(); BufferedReader br = new BufferedReader(new InputStreamReader(stdout)); StringBuilder sb = new StringBuilder(); //关闭远程连接 outLookOperationService.exitSession(session); session = null; while(true) { String line = br.readLine(); if(line == null){ break; } System.out.println(line); sb.append(line + "n"); }
本文标题:Java实现创建outlook邮箱账号
文章出自:http://myzitong.com/article/cjgihi.html