⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 recievepanel.java

📁 一个用纯java 编写的mail 的例子
💻 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 + -