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

📄 popbox.java

📁 java编的邮件客户端
💻 JAVA
字号:
package mfetcher;//// PopBox//// 27.01.1999 John Mettraux////// Copyright (C) 1999 John Mettraux//// This program is free software; you can redistribute it and/or// modify it under the terms of the GNU General Public License// as published by the Free Software Foundation.//// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.//import java.util.*;import java.io.*;public class PopBox    extends Thread{//// DATAS    public static PrintWriter messageLog = null;    private Vector exceptionListeners = new Vector();    private Vector reportListeners = new Vector();    String popServer;    String user;    String pass;    boolean delete;    String smtpHost;    String[] targets;        int messagesFetched;    int messagesResent;    int targetNb;        String version = null;//// CONSTRUCTORS    public PopBox        (String popServer, String user, String pass, boolean delete, String smtpHost, String[] targets)    {        super();                this.popServer = popServer;        this.user = user;        this.pass = pass;        this.delete = delete;        this.smtpHost = smtpHost;        this.targets = targets;                messagesFetched = 0;        messagesResent = 0;        targetNb = 0;    }//// PUBLIC METHODS    public void addExceptionListener (ExceptionListener el)    {        exceptionListeners.addElement(el);    }        public void removeExceptionListener (ExceptionListener el)    {        exceptionListeners.removeElement(el);    }    public void addReportListener (ReportListener rl)    {        reportListeners.addElement(rl);    }        public void removeReportListener (ReportListener rl)    {        reportListeners.removeElement(rl);    }    public void run ()    {                PopFetcher pf = new PopFetcher(popServer, user, pass, 0, delete);            // sleep time doesn't matter here        if (messageLog != null) {            pf.addMessageListener(new MessageListener () {                                //                // each message fetched is resent...                                public void messageReceived(MessageEvent me)                {                    String from = me.getFrom();                    String to = me.getTo();                    String subject = me.getSubject();                    messageLog.println(user+" from:"+from+" subject:"+subject+" to: "+to);                     messageLog.flush();                }            });        }        pf.addMessageListener(new MessageListener () {                        //            // each message fetched is resent...                        public void messageReceived(MessageEvent me)            {                String from = me.getFrom();                try {                    messagesFetched++;                    SmtpMailer sm = new SmtpMailer(smtpHost, from);                    //System.out.println("Version = "+version);                    if (version != null)                        sm.setVersion(version);                    sm.sendMail(targets, me.getMessageBody());                    targetNb = sm.getTargets();                    messagesResent++;                } catch (Exception e) {                    //System.out.println("Exception while fetching... "+e);                    PopBox.this.processException(e);                }            }        });        pf.setExceptionListener(new ExceptionListener () {            public void processException (String account, Exception e)            {                //                // just relaying the exception to upper level                //                // so account doesn't matter                PopBox.this.processException(e);            }        });        pf.run();            // don't start... just run... the thread here is PopBox itself !        doReport();                    }        public static PopBox parse (String configurationLine)        throws Exception    {        StringTokenizer st = new StringTokenizer(configurationLine);                String _popServer;        String _user;        String _pass;        boolean _delete;        String _smtpHost;                try {            st.nextToken(); // skip 'popserver'            _popServer = st.nextToken();            st.nextToken(); // skip 'user'            _user = st.nextToken();            st.nextToken(); // skip 'pass'            _pass = st.nextToken();            st.nextToken(); // skip 'delete'            _delete = st.nextToken().equals("true");            st.nextToken(); // skip 'smtpHost'            _smtpHost = st.nextToken();        } catch (Exception e) {            throw new Exception("Configuration parsing exception in line :\n"+configurationLine+"\n"+e);        }                int i = configurationLine.indexOf(" target ");        String sTargets = configurationLine.substring(i+8);                st = new StringTokenizer(sTargets, "; ");                Vector v = new Vector();        while(st.hasMoreTokens())            v.addElement(st.nextToken());        if (v.size() == 0)            throw new Exception("No targets in configuration line");                    String[] _targets = new String[v.size()];            for (int j=0; j<v.size(); j++)            _targets[j] = (String)v.elementAt(j);                    return new PopBox(_popServer, _user, _pass, _delete, _smtpHost, _targets);        }        public void setVersion (String version)    {        this.version = version;    }        public String getAccount ()    {        return user+"@"+popServer;    }    //// METHODS    private void processException (Exception e)    {        for (int i=0; i<exceptionListeners.size(); i++) {            ExceptionListener el = (ExceptionListener)exceptionListeners.elementAt(i);            el.processException(getAccount(), e);        }    }        private void doReport ()    {        for (int i=0; i<reportListeners.size(); i++) {            ReportListener rl = (ReportListener)reportListeners.elementAt(i);            rl.doReport(getAccount(), messagesFetched, messagesResent, targetNb);        }    }}

⌨️ 快捷键说明

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