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

📄 recievepanel.java

📁 一个JFrame实现的邮件客户端
💻 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.*;


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)
        {
        	 String fs1="";
             String fs2="";
             String fs3="";
             String fs4="";
             String fs5="";
            	try{
            	fs1= MimeUtility.decodeText(findEmailAddress(((MyMessage)(recieveVector.elementAt(index))).getAddress()));
            	fs2= MimeUtility.decodeText(((MyMessage)(recieveVector.elementAt(index))).getSubject());
            	fs3= MimeUtility.decodeText(((MyMessage)(recieveVector.elementAt(index))).getAttachment());
            	fs4= MimeUtility.decodeText(((MyMessage)(recieveVector.elementAt(index))).getContent());
            	fs5= MimeUtility.decodeText(((MyMessage)(recieveVector.elementAt(index))).getRecievedDate().toString());
             }catch(Exception E){
            	 System.out.println("Erro!");
             }
            	fromField.setText(fs1);
             subjectField.setText(fs2);
             attachField.setText(fs3);
           //  System.out.println(((MyMessage)(recieveVector.elementAt(index))).getAttachment());
             contentArea.setText(fs4);
             dateField.setText(fs5);
        } 
        }
}
  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)
        {
        	 String fs1="";
             String fs2="";
             String fs3="";
             String fs4="";
             String fs5="";
            	try{
            	fs1= MimeUtility.decodeText(findEmailAddress(((MyMessage)(sendVector.elementAt(index))).getAddress()));
            	fs2= MimeUtility.decodeText(((MyMessage)(sendVector.elementAt(index))).getSubject());
            	fs3= MimeUtility.decodeText(((MyMessage)(sendVector.elementAt(index))).getAttachment());
            	fs4= MimeUtility.decodeText(((MyMessage)(sendVector.elementAt(index))).getContent());
            	fs5= MimeUtility.decodeText(((MyMessage)(sendVector.elementAt(index))).getRecievedDate().toString());
             }catch(Exception E){
            	 System.out.println("Erro!");
             }
            	fromField.setText(fs1);
             subjectField.setText(fs2);
             attachField.setText(fs3);
           //  System.out.println(((MyMessage)(recieveVector.elementAt(index))).getAttachment());
             dateField.setText(fs5);
             contentArea.setText(fs4);
             /*
         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()+"."+MimeUtility.decodeText(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 + -