?? remotemailmanagement.java~68~
字號:
/** 仿造foxmail遠程油箱管理數據模型用message[]做所用主要技術:storeURLNameMVC JTableFetchProfile類*/package mailofjava;import javax.mail.*;import javax.mail.internet.*;import javax.swing.*;import javax.swing.table.*;import java.awt.*;import java.awt.event.*;import java.util.*;/** 用表格形式顯示郵件頭列表,用model封裝的郵件列表,不處理內容和附件*/public class RemoteMailManagement extends JFrame { JTable jtable; JScrollPane jsp; public RemoteMailManagement() { MessageModel mdl=new MessageModel(); jtable=new JTable(mdl); jtable.setAutoCreateColumnsFromModel(true); jtable.setAutoResizeMode(0); jsp=new JScrollPane(); jsp.getViewport().add(jtable); this.getContentPane().add(jsp); } public static void main(String[] args) { RemoteMailManagement remoteMailManagement1 = new RemoteMailManagement(); remoteMailManagement1.addWindowListener( new WindowAdapter(){ public void WindowsListener(WindowEvent we){ System.exit(0); }; }//adapter ); remoteMailManagement1.setSize(600,300); remoteMailManagement1.setVisible(true); }}/** 本類模式用于封裝msg[]數組,返回某郵件的from/to/subject等數據*/class MessageModel extends AbstractTableModel{ public static final int MAIL_SUBJECT=0; public static final int MAIL_FROM=1; public static final int MAIL_TO=2; public static final int MAIL_DATE=3; public static final int MAIL_REPLYTO=4; Message[] msg; /**構造:取得新郵件列表數據*/ public MessageModel(){ CreateMessage msg1=new CreateMessage(); msg=msg1.getMessage() ; }//constructor public int getColumnCount() {//有幾行呢? /*有subject ,from ,to,received date,reply to 5個字段 */ return 5; } public int getRowCount() {//行數就是信息之條數,在構造前做的? int i=msg.length ; return i ; } /** 取得指定位置的元素*/ public Object getValueAt (int row, int column) {//取得值,好象是容器回調的 if(row> msg.length) { System.err.println("out of range"); System.exit(1); }; try{ switch(column){ case MessageModel.MAIL_DATE: { Date dd=msg[row].getSentDate() ; if (dd==null) return "無時間"; else return dd.toString() ; }; case MessageModel.MAIL_FROM: { Address[] add; add = msg[row].getFrom() ; return add[0].toString() ; }; case MessageModel.MAIL_REPLYTO: return msg[row].getReplyTo()[0].toString() ; case MessageModel.MAIL_SUBJECT : return msg[row].getSubject() ; case MessageModel.MAIL_TO : return msg[row].getRecipients(Message.RecipientType.TO )[0].toString() ; default: return "不清楚"; }//switch }catch(Exception e){ System.err.println("getvalu"); e.printStackTrace() ;}; return "error"; } public String getColumnName (int columnIndex) { switch(columnIndex) { case MessageModel.MAIL_DATE: return "日期"; case MessageModel.MAIL_FROM: return "來自"; case MessageModel.MAIL_REPLYTO: return "回復到"; case MessageModel.MAIL_SUBJECT : return "主題"; case MessageModel.MAIL_TO : return "寄達"; default: return "不清楚"; } }//GETCOLUMNNAME}/** 這是個各模塊用的公用類,用于連接服務器取得數據*/class CreateMessage{ Properties prop; Session session; protected Message[] msg; URLName urlname; Store mailstore; Folder root,inbox ; Flags flg= new Flags(); FetchProfile fp;//取得指定的內容 int openMode=0; /**設定以只讀形式打開folder與否*/ public void setOpenMode(int mode){ if (mode==1) openMode=1; else openMode=0; } public CreateMessage(){ this.setOpenMode(0) ; initMessage(); } public CreateMessage(int mode){ this.setOpenMode(mode) ; initMessage(); }/*取得服務器支持的標記*/public Flags getCFlags(){ flg = inbox.getPermanentFlags() ; return flg;}/**連接服務器取得數據*/public void initMessage(){ fp=new FetchProfile(); fp.add(FetchProfile.Item.ENVELOPE );//取得信封 prop=new Properties(); urlname=new URLName("pop3","127.0.0.1",110,null,"Mirthrandir","916916916"); //urlname=new URLName("pop3","pop.163.net",110,null,"Zennhai","dfgrtyy");收外頭的郵件 System.err.println("url: "+urlname.toString() ); prop.put("mail.transport.protocol","pop3"); prop.put("mail.store.protocol","pop3"); try{ session=Session.getDefaultInstance(prop,null); mailstore= session.getStore(urlname); mailstore.connect() ; root=mailstore.getDefaultFolder() ; inbox=root.getFolder("INBOX") ; if(this.openMode ==0) inbox.open(Folder.READ_ONLY ); else inbox.open(Folder.READ_WRITE ); msg= inbox.getMessages() ; inbox.fetch(msg,fp);//取得指定的字段,在msg里頭了 System.err.println("msglength="+msg.length ); System.err.println("okay,mail fetched"); System.err.println("the date"+msg[0].getReceivedDate() ); } catch (Exception e){ e.printStackTrace() ;}; }//initMessage public Message[] getMessage(){ return msg; }//}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -