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

📄 jmail.java

📁 Java邮箱
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

  //删除邮件
  public void deleteEmail(){
    try  {
      int folderIdx = folderViews.getSelectedIndex();
      java.awt.List letterList = (java.awt.List) folderViews.getItem(folderIdx);
      int letterIdx = letterList.getSelectedIndex();
      String folder = folderViews.getSelectedItem();
      Vector letters = (Vector) folders.get(folder);
      letters.removeElementAt(letterIdx);
      letterList.remove(letterIdx);
      enableButtons();
     }
    catch (Exception e) {
      new WinFrame("Deleting mail",e);
    }
  }
  
  //初始化邮件,读取文件saveState中信息
  private void init(File saveState){
    this.saveState = saveState;
    enableButtonsListener = new ItemListener(){
        public void itemStateChanged(ItemEvent e){
        	 enableButtons(); 
         }
      };
      
    folderViews = new ChoiceCardPanel("Folders");
    //System.out.println( "folderViews = " + folderViews );
    folderViews.addItemListener( enableButtonsListener );
    folders = new Hashtable();
    boolean restored = false;
    if ( saveState.exists() )    
      try  {

        FileInputStream fis = new FileInputStream( saveState );  //在此处文件名saveState为"Email"
        ObjectInputStream ois = new ObjectInputStream(fis);
        smtp = ( SMTPwConfig ) ois.readObject();
        pop3 = ( POP3wConfig ) ois.readObject();     
        filterConfig = ( FilterConfig ) ois.readObject();
        dateConfig   = ( DateConfig ) ois.readObject();
        Hashtable savedFolders = ( Hashtable ) ois.readObject();  
        ois.close();
        addFolders( savedFolders );
        restored = true;
      }
      catch (Exception e) {
        new WinFrame("Restoring JMail state",e);
      }
    if ( !restored )  {                 //文件不存在
      addFolder(Inbox);
      addFolder(Outbox);
      addFolder(SentItems);
      smtp = new SMTPwConfig();
      pop3 = new POP3wConfig();
      filterConfig = new FilterConfig();
      dateConfig   = new DateConfig();
    }
    smtpPop3Config = new SMTPPOP3Config(smtp,pop3);
    mailbox = new Mailbox() {
        public void post(Email email){ 
          addToFolder(Outbox,email); 
          }
        public String getFrom() { 
          return smtp.getSenderEmailAddress(JMail.this); 
         }
      };
    Panel p = new Panel();
    p.add( newMsgButton );
    
    newMsgButton.addActionListener
      (
        new ActionListener() {
          public void actionPerformed(ActionEvent e){
            new ComposeEmail ("New Message",mailbox ).setVisible(true);
            
          }
        }
      );
    p.add(replyToButton);
    p.add(replyToAllButton);
    p.add(forwardButton);
    p.add(sendXcvButton);
    p.add(deleteButton);
    add("North",p);
    
    //Checkbox cb = new Checkbox("one");
    //p.add(cb);
    add( "Center",new InsetPanel( 10,10,10,10,folderViews ) );  //邮件的主要信息面板
    preview = new PreviewEmailPanel(10,12);                     //预览邮件,设定为10行12列
    add( "South",new InsetPanel( 10,10,10,10,preview ) );
    pack();
    
    //接收&发送邮件事件监听
    sendXcvButton.addActionListener
      (
        new ActionListener(){
          public void actionPerformed(ActionEvent e){
            sendXcv();
          }
        }
      );
      
    //删除邮件事件监听
    deleteButton.addActionListener
      (
        new ActionListener(){
          public void actionPerformed(ActionEvent e){ 
            deleteEmail(); 
            }
        }
      );
    
    //回复邮件事件监听
    replyToButton.addActionListener
      (
        new ActionListener(){
          public void actionPerformed(ActionEvent e){
            Email em = getSelectedEmail().replyTo(JMail.this);
            new ComposeEmail( em.getSubject(), mailbox,em ).setVisible(true);
          }
        }
      );
    //回复所有监听
    replyToAllButton.addActionListener
      (
        new ActionListener(){
          public void actionPerformed(ActionEvent e){
            Email em = getSelectedEmail().replyToAll(JMail.this);
            new ComposeEmail( em.getSubject(), mailbox,em ).setVisible(true);
          }
        }
      );
    //转发邮件事件监听  
    forwardButton.addActionListener
      (
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Email em = getSelectedEmail().forward();
            
            new ComposeEmail(em.getSubject(), mailbox,em ).setVisible(true);
          }
        }
      );
    
      
    enableButtons();
    MenuBar mb = new MenuBar();
    //Mail菜单:包含Options菜单项和Filter菜单项
    Menu m = new Menu("Mail");
    MenuItem mi = new MenuItem("Options");
    
    mi.addActionListener
      (
        new ActionListener() {
          public void actionPerformed(ActionEvent e){
          	 //设置SMTP和POP服务器属性
             smtpPop3Config.configure(JMail.this,"JMail"); 
             }
        }
      );   
    m.add(mi);
   
    //增加过滤按钮
    mi = new MenuItem("Filter");
    //过滤事件需修改
    mi.addActionListener
      (
        new ActionListener() {
          public void actionPerformed(ActionEvent e){
          	 //设置过滤事件	
          	 filterConfig.configure(JMail.this,"JMail");
          }
          
        }
      );
      
    m.add(mi); 
    mb.add(m);
    
    //增加Tools菜单
    m  = new Menu("Tools");
    mi = new MenuItem("Inquire about");  //查询按钮,可根据时间段查询Email
    
    mi.addActionListener
      (
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
             dateConfig.configure(JMail.this,"JMail");
          }
        }
      );
    
    
    m.add(mi);
    
    mi = new MenuItem("Address book");
    m.add(mi);
    mb.add(m);
    
       
    //Help菜单:包含Feedback菜单项和About菜单项
    m = new Menu("Help");
    mi = new MenuItem("Feedback");
    mi.addActionListener
      (
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Email em = new Email(
              "To: wy82@21cn.com\n" +
              "Subject: Problem!\n\n" +
              "Please send me your questions, comments, suggestions!"); 
            new ComposeEmail( em.getSubject(), mailbox,em ).setVisible(true);
          }
        }
      );
      
    m.add(mi);
    
    mi = new MenuItem("About");
    mi.addActionListener
      (
        new ActionListener(){
          public void actionPerformed(ActionEvent e){
            final WinDialog wd = new WinDialog(JMail.this,"About",true);
            Panel ap = new Panel();
            ap.setLayout( new GridBagLayout() );
            GridBagConstraints c = new GridBagConstraints();
            c.gridwidth = GridBagConstraints.REMAINDER;
            ap.add( new Label("Mail Client"),c );
            ap.add( new Label("Edit by WangPingshen "),c );
            ap.add( new Label("科大 R & D"),c );
            ap.add( new Label("2005年6月"),c );
            wd.add( "Center",new InsetPanel(15,15,15,15,ap) );
            Button ok = new Button("Ok");
            ap = new Panel();
            ap.add(ok);
            wd.add("South",ap);
            
            ok.addActionListener
              (
                new ActionListener(){
                  public void actionPerformed(ActionEvent e){ 
                    wd.dispose(); 
                  }
                }
              );
              
            wd.pack();
            wd.setVisible(true);
          }
        }
      );
      
    m.add(mi);
    mb.add(m);
    
    setMenuBar(mb);
  }

  public JMail(File saveState){
    super( saveState.getName() );
    init( saveState );
  }

  public JMail(String pathname){
    this( new File( pathname ) );
  }

  public void save(){
  	//保存信息,文件名:savaState
    try  {
      FileOutputStream fos = new FileOutputStream( saveState );
      ObjectOutputStream oos = new ObjectOutputStream(fos);
      oos.writeObject(smtp);                //写入smtp服务器初始化信息
      oos.writeObject(pop3);                //写入pop服务器初始化信息
      //过滤设置写入文件中
      oos.writeObject( filterConfig );      //写入过滤信息
      oos.writeObject( dateConfig );        //写入时间段信息
      
      oos.writeObject(folders);             //写入邮件信息(包括发件夹,收件夹。已发邮件夹).
      //System.out.println(" smtp ="+ smtp );
      //System.out.println(" pop3 ="+ pop3 );
      //System.out.println(" filterConfig = "+ filterConfig );
      //System.out.println(" folders = "+ folders );
      //System.out.println( " add_filter = " + filterConfig.Adress_Filter );
      //System.out.println( " sub_filter = " + filterConfig.Subject_Filter );
      oos.close();
    }
    catch (Exception e) {
      new WinFrame("JMail saving state",e);
    }
  }

  public void dispose(){
    save();
    super.dispose();
  }
  
  //根据过滤设置过滤邮件  
  public boolean filters( String Str, String strFilter ){ //过滤邮件
    	Str = Str.toLowerCase();
    	strFilter = strFilter.toLowerCase();
        int First = 0;
		if( (First = Str.indexOf(strFilter) ) != -1 ){ //需要过滤
		    return true;
		 }
		else                                           //不需过滤  
		    return false;
	  }

  public static void main(String[] args){
    try  {
      new JMail( args[0] ).appMainWindow().setVisible(true);
    } 
    catch (Exception e)  {
      new JMail("EMail").appMainWindow().setVisible(true);    //初始化邮件,信息存贮在Email文件中
    }
  }
 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -