導入信息的關鍵是如何對msn的通訊協議進行封裝,這裏會有兩個選擇,一個使用openfire(xmlapp協議),另外就是使用jml,前者配置起來相對複雜,但兼容性較好,openfire能夠和任何im進行通訊,包括(skype、msn、smalltalk等)、後者對msn和smalltalk比較好,這裏只介紹如何使用jml導入用戶的msn好友列表.
{
new SimpleMsn("123123123123@hotmail.com", "*********").start();
}
{
MsnContact[] cons = messenger.getContactList().getContacts();
System.out.println("您現在有:"+cons.length+"個聯繫人,列表如下!");
for (MsnContact con : cons) {
System.out.println("姓名:"+con.getDisplayName());
System.out.println("email地址:"+con.getEmail());
System.out.println("在線狀態:"+con.getStatus());
if (con.getStatus() != MsnUserStatus.OFFLINE) {
System.out.print(con.getEmail()+"開始導入信息");
messenger.sendText(con.getEmail(), "hello,這是測試信息,並無惡意!");
}
// System.out.println(con.getPersonalMessage());
}
}
* 爲了讓msn徹底退出,這裏採用調用子進程的方法
* 啓動msn
* 給子進程傳遞三個運行時參數
* msn帳號 msn密碼 和要傳遞的內容
* 子進程取出的好友email列表通過進程輸入流讀出(對於父進程來說相當於輸出流)
* @author huql
*如果不這樣調用,內存可能不能釋放,這是個問題
*/
System.getenv();
String msnCount=[email protected];
String password="19820000";
String message="你好,歡迎訪問www.17k.com,更多精彩盡在其中!";
String command="java -cp /"e:/workspace/user.17k.com/web/WEB-INF/lib/"/jml.jar; net.sf.jml.example.SimpleMsn "+msnCount+" "+password+" "+message;
try {
Process p=Runtime.getRuntime().exec(command);
BufferedInputStream in = new BufferedInputStream(p.getInputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String content=br.readLine();
while(content!=null){
System.out.println(content);
content=br.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("continue to excute other program...............");
}