📄 remotemailmanagement.java
字号:
/** 仿造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 = root.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 + -