📄 recievepanel.java
字号:
//package mailbox;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.border.*;import javax.swing.tree.*;import javax.swing.event.*;import javax.mail.internet.*;import javax.mail.*;import java.util.*;/** * Title: MailBox * Description: send and recieve Email * Copyright: Copyright (c) 2002 * Company: 421 * @author xuhao * @version 1.0 */public class RecievePanel extends JPanel { waitDialog wait=new waitDialog(); JTree recieveTree; DefaultMutableTreeNode recieveNode; DefaultTreeModel recieveModel; DefaultMutableTreeNode node; JTree sendTree; DefaultMutableTreeNode sendNode; DefaultTreeModel sendModel; Vector recieveVector=new Vector(); Vector sendVector=new Vector(); JLabel contentLabel=new JLabel(); JTextArea contentArea = new JTextArea(); JScrollPane areaJsp=new JScrollPane(contentArea); JScrollPane treeJsp1; JScrollPane treeJsp2; JLabel jLabel3 = new JLabel(); JTextField fromField = new JTextField(); JLabel jLabel4 = new JLabel(); JTextField subjectField = new JTextField(); JLabel jLabel5 = new JLabel(); JTextField attachField = new JTextField(); Border border1; JButton recieveButton = new JButton(); ProcessMessage processM=new ProcessMessage(); JLabel dateLabel=new JLabel(); JTextField dateField = new JTextField(); public RecievePanel() { try { jbInit(); } catch(Exception ex) { ex.printStackTrace(); } } void jbInit() throws Exception { recieveNode=new DefaultMutableTreeNode("收件箱"); recieveModel = new DefaultTreeModel(recieveNode); recieveTree = new JTree(recieveModel); recieveTree.setEditable(false); recieveTree.getSelectionModel().setSelectionMode (TreeSelectionModel.SINGLE_TREE_SELECTION); recieveTree.setShowsRootHandles(true); recieveTree.addTreeSelectionListener(new treeLis1()); /* DefaultMutableTreeNode node1=new DefaultMutableTreeNode("messgae1"); recieveModel.insertNodeInto(node1, recieveNode,recieveNode.getChildCount()); recieveTree.scrollPathToVisible(new TreePath(node1.getPath())); MyMessage mymessage=new MyMessage(); mymessage.setSubject("niaho"); node1.setUserObject(mymessage); System.out.println(((MyMessage)node1.getUserObject()).getSubject()); */ sendNode=new DefaultMutableTreeNode("已保存邮件"); sendModel = new DefaultTreeModel(sendNode); sendTree = new JTree(sendModel); sendTree.setEditable(false); sendTree.getSelectionModel().setSelectionMode (TreeSelectionModel.SINGLE_TREE_SELECTION); sendTree.setShowsRootHandles(true); sendTree.addTreeSelectionListener(new treeLis2()); treeJsp1=new JScrollPane(recieveTree); treeJsp2=new JScrollPane(sendTree); recieveTree.setFont(new java.awt.Font("Monospaced", 0, 12)); sendTree.setFont(new java.awt.Font("Monospaced", 0, 12)); treeJsp1.setBounds(new Rectangle(21, 10, 147, 177)); treeJsp2.setBounds(new Rectangle(21, 191, 147, 172)); /* DefaultMutableTreeNode messageNode1= new DefaultMutableTreeNode("nihao"); DefaultMutableTreeNode messageNode2= new DefaultMutableTreeNode("dajiahao"); recieveModel.insertNodeInto(messageNode1, recieveNode,recieveNode.getChildCount()); recieveModel.insertNodeInto(messageNode2, recieveNode,recieveNode.getChildCount()); recieveTree.scrollPathToVisible(new TreePath(messageNode1.getPath())); recieveTree.scrollPathToVisible(new TreePath(messageNode2.getPath())); */ this.setLayout(null); border1 = BorderFactory.createCompoundBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED,Color.white,Color.white,Color.white,Color.white),BorderFactory.createEmptyBorder(2,2,2,2)); contentArea.setFont(new java.awt.Font("Monospaced", 0, 14)); contentArea.setToolTipText(""); contentLabel.setFont(new java.awt.Font("Monospaced", 0, 14)); contentLabel.setText("内容:"); contentLabel.setBounds(new Rectangle(193, 156, 66, 27)); areaJsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); areaJsp.getViewport().setBackground(Color.white); areaJsp.setFont(new java.awt.Font("Monospaced", 0, 14)); areaJsp.setBounds(new Rectangle(187, 189, 347, 173)); jLabel3.setFont(new java.awt.Font("Monospaced", 0, 14)); jLabel3.setText("地址:"); jLabel3.setBounds(new Rectangle(190, 12, 51, 26)); dateLabel.setFont(new java.awt.Font("Monospaced", 0, 14)); dateLabel.setText("日期:"); dateLabel.setBounds(new Rectangle(190, 84, 47, 26)); dateField.setFont(new java.awt.Font("Monospaced", 0, 14)); dateField.setBounds(new Rectangle(290, 79, 243, 31)); fromField.setFont(new java.awt.Font("Monospaced", 0, 14)); fromField.setBounds(new Rectangle(290, 11, 243, 31)); jLabel4.setFont(new java.awt.Font("Monospaced", 0, 14)); jLabel4.setText("主题:"); jLabel4.setBounds(new Rectangle(191, 47, 48, 29)); subjectField.setFont(new java.awt.Font("Monospaced", 0, 14)); subjectField.setBounds(new Rectangle(290, 45, 243, 31)); jLabel5.setFont(new java.awt.Font("Monospaced", 0, 14)); jLabel5.setToolTipText(""); jLabel5.setText(" 附件:"); jLabel5.setBounds(new Rectangle(185, 117, 52, 33)); attachField.setFont(new java.awt.Font("Monospaced", 0, 14)); attachField.setBounds(new Rectangle(290, 117, 243, 31)); recieveButton.setFont(new java.awt.Font("Monospaced", 0, 14)); recieveButton.setBorder(border1); recieveButton.setText("接收邮件"); recieveButton.setBounds(new Rectangle(421, 156, 111, 28)); recieveButton.addActionListener(new recieveAction()); this.add(fromField, null); this.add(subjectField, null); this.add(areaJsp, null); this.add(contentLabel,null); this.add(treeJsp1, null); this.add(treeJsp2, null); this.add(jLabel5, null); this.add(jLabel3, null); this.add(jLabel4, null); this.add(dateField,null); this.add(dateLabel,null); this.add(attachField, null); this.add(recieveButton, null); }class treeLis1 implements TreeSelectionListener,Serializable{ DefaultMutableTreeNode node; int index=-1; public void valueChanged(TreeSelectionEvent e) { node=(DefaultMutableTreeNode)recieveTree.getLastSelectedPathComponent(); for(int i=0;i<recieveNode.getChildCount();i++) if(node==(DefaultMutableTreeNode)recieveNode.getChildAt(i)) {index=i; break; } if(index>=0) { fromField.setText(findEmailAddress(((MyMessage)(recieveVector.elementAt(index))).getAddress())); subjectField.setText(((MyMessage)(recieveVector.elementAt(index))).getSubject()); attachField.setText(((MyMessage)(recieveVector.elementAt(index))).getAttachment()); // System.out.println(((MyMessage)(recieveVector.elementAt(index))).getAttachment()); contentArea.setText(((MyMessage)(recieveVector.elementAt(index))).getContent()); } }} class treeLis2 implements TreeSelectionListener,Serializable{ DefaultMutableTreeNode node; int index=-1; public void valueChanged(TreeSelectionEvent e) { node=(DefaultMutableTreeNode)sendTree.getLastSelectedPathComponent(); for(int i=0;i<sendNode.getChildCount();i++) if(node==(DefaultMutableTreeNode)sendNode.getChildAt(i)) {index=i; break; } if(index>=0) { fromField.setText(((MyMessage)(sendVector.elementAt(index))).getAddress()); subjectField.setText(((MyMessage)(sendVector.elementAt(index))).getSubject()); attachField.setText(((MyMessage)(sendVector.elementAt(index))).getAttachment()); dateField.setText(((MyMessage)(sendVector.elementAt(index))).getRecievedDate()+""); contentArea.setText(((MyMessage)(sendVector.elementAt(index))).getContent()); } }} class recieveAction implements ActionListener,Serializable { public void actionPerformed(ActionEvent e) { wait.Start(); (new recieveThread()).start(); wait.setVisible(true); } } class recieveThread extends Thread implements Serializable { String Server="pop3://"+User.getUserName()+":"+User.getPassWord()+"@"+User.getPop3Server()+"/INBOX"; public void run() { URLName ServerUrlName=new URLName(Server); Properties props=new Properties(); try { Session session=Session.getDefaultInstance(props,null); Folder folder=session.getFolder(ServerUrlName); if(folder==null) { JOptionPane.showMessageDialog(null,"Sorry,找不到所要的文件夹:"+Server); } else { folder.open(Folder.READ_WRITE); Message[] messages=folder.getMessages(); if(messages.length==0) { JOptionPane.showMessageDialog(null,"在你的邮箱里没有新的邮件!"); folder.close(false); } else { for(int i=0;i<messages.length;i++) { MyMessage mymessage=new MyMessage(); mymessage.setAddress(InternetAddress.toString(messages[i].getFrom())); mymessage.setSubject(getsubject(messages[i])); mymessage.setRecievedDate(messages[i].getSentDate()); mymessage.setIsHtml(true); Object body=messages[i].getContent(); if(body instanceof Multipart) { processM.processMultipart((Multipart)body,mymessage,recieveVector); } else { processM.processPart(messages[i],mymessage,recieveVector); } recieveVector.addElement(mymessage); DefaultMutableTreeNode messageNode= new DefaultMutableTreeNode(recieveVector.size()+"."+findEmailAddress(mymessage.getAddress())); recieveModel.insertNodeInto(messageNode, recieveNode,recieveNode.getChildCount()); recieveTree.scrollPathToVisible(new TreePath(messageNode.getPath())); messages[i].setFlag(Flags.Flag.DELETED,true); } folder.close(true); } } wait.Stop(); wait.setVisible(false);} catch(Exception MessageE) { wait.Stop(); wait.setVisible(false); JOptionPane.showMessageDialog(null,"Error:"+MessageE.getMessage()); }}//run end}//recieveThread end public String getstr(String str) { try { String temp_p=str; byte[] temp_t=temp_p.getBytes("ISO8859-1"); String temp=new String(temp_t); return temp; } catch(Exception e) { return str; } } public String getsubject(Message m) throws Exception { boolean bgetstr; String temps; String[] ta1=m.getHeader("Subject"); String _subject; if (ta1!=null) _subject=ta1[0]; else _subject=""; if (_subject.indexOf("=?gb2312")!=-1 || _subject.indexOf("=?GBK")!=-1 || _subject.indexOf("=?utf-8")!=-1) bgetstr=false; else bgetstr=true; try{ temps=MimeUtility.decodeText(_subject); } catch(UnsupportedEncodingException E) {return _subject;} if (temps.length()==0) { temps="(无主题)"; bgetstr=false; } if (bgetstr==false) return temps; else return getstr(temps); } public String findEmailAddress(String str) { try{ int foreindex=str.indexOf("<"); int backindex=str.indexOf(">"); if(foreindex!=-1&&backindex!=-1) str=str.substring(foreindex+1,backindex); return str; } catch(Exception e) { return str; } } public String getEmailName(String str) { try{ int foreindex=str.indexOf("<"); if(foreindex!=-1) str=str.substring(0,foreindex); return str; } catch(Exception e) { return str; } } //end}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -