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

📄 getmail.java

📁 云网论坛CWBBS 源码,内容丰富,学习,参考,教学的好资料,具体见内说明,
💻 JAVA
字号:
package cn.js.fan.mail;

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import cn.js.fan.util.ErrMsgException;
import java.io.InputStream;
import cn.js.fan.util.StrUtil;
import org.apache.log4j.Logger;

public class GetMail {
    static boolean debug = true;
    String user = "";
    String pwd = "";
    String server = "";
    Message[] msgs = null;
    Vector mailmsgs = null;
    int port = 110;

    Store store = null;
    Folder folder = null;

    Logger logger = Logger.getLogger( GetMail.class.getName() );

    public GetMail(String server, String user, String pwd) {
      this.server = server;
      this.user = user;
      this.pwd = pwd;
    }

    public GetMail(String server, int port, String user, String pwd) {
      this.server = server;
      this.user = user;
      this.pwd = pwd;
      this.port = port;
    }

    protected void finalize() throws Throwable {
      super.finalize();
      if (mailmsgs != null) {
        mailmsgs.removeAllElements();
        mailmsgs = null;
      }
    }

    /**
     * 根据类型获取邮件
     * @param type 除垃圾箱外的邮件list 垃圾箱dustbin
     * @return
     * @throws ErrMsgException
     */
    public Message[] receive(String type) throws ErrMsgException {
        if (type==null)
          return null;
        try {
            Properties props = System.getProperties();
            Session session = Session.getDefaultInstance(props, null);
            store = session.getStore("pop3");
            store.connect(server, port, user, pwd);
            folder = store.getDefaultFolder();
            if(folder == null) throw new ErrMsgException("找不到默认目录");
            folder = folder.getFolder("INBOX");
            if(folder == null) throw new ErrMsgException("无 POP3 INBOX");

            folder.open(Folder.READ_ONLY);
            msgs = folder.getMessages();
        }
        catch (Exception ex) {
            logger.error("receive:"+ex.getMessage());
            ex.printStackTrace();
            throw new ErrMsgException(ex.getMessage());
        }
        return msgs;
    }

    public void close() {
        try {
            if (folder != null) folder.close(false);
        } catch (Exception ex2) {
            logger.error("receive:" + ex2.getMessage());
            //ex2.printStackTrace();
        }
        try {
            if (store != null) store.close();
        } catch (Exception ex2) {
            logger.error("receive:" + ex2.getMessage());
            ex2.printStackTrace();
        }
    }

/*
        // 按下列方法取出来太慢了
        public Vector receive(String type) throws ErrMsgException {
            if (type==null)
              return null;
            Store store = null;
            Folder folder = null;
            if (mailmsgs != null)
              mailmsgs.removeAllElements();
            mailmsgs = new Vector();

            try {
                Properties props = System.getProperties();
                Session session = Session.getDefaultInstance(props, null);
                store = session.getStore("pop3");
                store.connect(server, port, user, pwd);
                folder = store.getDefaultFolder();
                if(folder == null) throw new ErrMsgException("找不到默认目录");
                folder = folder.getFolder("INBOX");
                if(folder == null) throw new ErrMsgException("无 POP3 INBOX");

                folder.open(Folder.READ_ONLY);
                msgs = folder.getMessages();

                for(int msgNum = 0; msgNum < msgs.length; msgNum++) {
                   MailMsg msg = getMessage(msgs[msgNum]);
                   if (msg.message.isSet(Flags.Flag.DELETED))
                       logger.error("It is deleted");
                   if (type.equals("list")) {
                     if (!msg.isDeleted())
                       mailmsgs.addElement(msg);
                   }
                   else if (type.equals("dustbin")) {
                     if (msg.isDeleted())
                       mailmsgs.addElement(msg);
                   }
                   else
                     mailmsgs.addElement(msg);
                }
            }
            catch (Exception ex) {
                logger.error("receive:"+ex.getMessage());
                ex.printStackTrace();
                throw new ErrMsgException(ex.getMessage());
            }
            finally {
              try {
                  if (folder!=null) folder.close(false);
              }
              catch (Exception ex2) {
                logger.error( "receive:"+ex2.getMessage() );
                //ex2.printStackTrace();
              }
              try {
                  if (store!=null) store.close();
              }
              catch (Exception ex2) {
                  logger.error("receive:"+ex2.getMessage());
                  ex2.printStackTrace();
              }
            }
            return mailmsgs;
    }
    */

    /**
     * 取得特定num的邮件
     * @param i 邮件标号
     * @return
     */
    public MailMsg getMessageOfNum(int i) {
      Store store = null;
      Folder folder = null;
      MailMsg mailmsg = null;
      try {
          Properties props = System.getProperties();
          Session session = Session.getDefaultInstance(props, null);
          store = session.getStore("pop3");
          store.connect(server, port, user, pwd);
          folder = store.getDefaultFolder();
          if(folder == null) throw new ErrMsgException("找不到默认目录");
          folder = folder.getFolder("INBOX");
          if(folder == null) throw new ErrMsgException("无 POP3 INBOX");

          folder.open(Folder.READ_ONLY);
          Message msg = folder.getMessage(i);
          mailmsg = new MailMsg(msg,true); //用true来取得全部信息,包括邮件正文
      }
      catch (Exception ex) {
          ex.printStackTrace();
      }
      finally {
        try {
            if (folder!=null) folder.close(false);
        }
        catch (Exception ex2) {
            ex2.printStackTrace();
        }
        try {
            if (store!=null) store.close();
        }
        catch (Exception ex2) {
            ex2.printStackTrace();
        }
      }
      return mailmsg;
    }

    /**
     * 删除邮件
     * @param i 邮件ID
     * @return
     */
    public boolean delMessageOfNum(String[] mailids) {
      Store store = null;
      Folder folder = null;
      MailMsg mailmsg = null;
      try {
          Properties props = System.getProperties();
          Session session = Session.getDefaultInstance(props, null);
          store = session.getStore("pop3");
          store.connect(server, port, user, pwd);
          folder = store.getDefaultFolder();
          if(folder == null) throw new ErrMsgException("找不到默认目录");
          folder = folder.getFolder("INBOX");
          if(folder == null) throw new ErrMsgException("无 POP3 INBOX");

          folder.open(Folder.READ_WRITE);
          int len = mailids.length;
          for (int i=0; i<len; i++) {
            if (!StrUtil.isNumeric(mailids[i]))
              return false;

            logger.error("msg deled num:"+mailids[i]);
            Message msg = folder.getMessage(Integer.parseInt(mailids[i]));
            msg.setFlag(Flags.Flag.DELETED, true);
          }
      }
      catch (Exception ex) {
          ex.printStackTrace();
          return false;
      }
      finally {
        try {
            if (folder!=null) folder.close(true);//为true则彻底删除,否则将其置入垃圾箱
        }
        catch (Exception ex2) {
            ex2.printStackTrace();
        }
        try {
            if (store!=null) store.close();
        }
        catch (Exception ex2) {
            ex2.printStackTrace();
        }
      }
      return true;
    }

    public Attachment getAttachment(int msgnum, int attachnum) {
      Store store = null;
      Folder folder = null;
      MailMsg mailmsg = null;
      Attachment a = null;
      try {
          Properties props = System.getProperties();
          Session session = Session.getDefaultInstance(props, null);
          store = session.getStore("pop3");
          System.out.println("server=" + server + " port=" + port + " user=" + user + " pwd=" + pwd);
          store.connect(server, port, user, pwd);
          folder = store.getDefaultFolder();
          if(folder == null) throw new ErrMsgException("找不到默认目录");
          folder = folder.getFolder("INBOX");
          if(folder == null) throw new ErrMsgException("无 POP3 INBOX");

          folder.open(Folder.READ_ONLY);
          Message msg = folder.getMessage(msgnum);
          mailmsg = new MailMsg(msg); //用true来取得全部信息,包括邮件正文
          a = mailmsg.getAttachment(attachnum);
      }
      catch (Exception ex) {
          ex.printStackTrace();
      }
      finally {
        try {
            if (folder!=null) folder.close(false);
        }
        catch (Exception ex2) {
            ex2.printStackTrace();
        }
        try {
            if (store!=null) store.close();
        }
        catch (Exception ex2) {
            ex2.printStackTrace();
        }
      }
      return a;
    }

    public MailMsg getMessage(Message message) {
        MailMsg msg = new MailMsg(message, false);
        try {
/*            String from = ((InternetAddress)message.getFrom()[0]).getPersonal();
            if(from==null) from = ((InternetAddress)message.getFrom()[0]).getAddress();
            mailContent = "来自: <a mailto='"+from+"'>"+from+"<br>";

            String subject = message.getSubject();
            mailContent += "主题: "+subject+"<br>";
            //String d = message.getReceivedDate().toString();//接收时间
            Part messagePart = message;
            Object content = messagePart.getContent();
*/
            //if (content instanceof Multipart) {
            //  handleMultipart((Multipart)content);
            //} else {
            //  handlePart(messagePart);
            //}
/*----------------------原始---------------------
            if(content instanceof Multipart) {
                messagePart = ((Multipart)content).getBodyPart(0);
                //mailContent += "类型:复合文档"+"<BR>";
            }

            //mailContent += "内容说明: "+content.toString()+"<br>";
            String contentType = messagePart.getContentType();
            if(contentType.startsWith("text/plain") || contentType.startsWith("text/html")) {
                InputStream is = messagePart.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(is));
                String thisLine = reader.readLine();
                while(thisLine!=null) {
                    mailContent += thisLine;
                    thisLine = reader.readLine();
                }
                is.close();
            }
*/
        }
        catch(Exception ex) {
            ex.printStackTrace();
        }
        return msg;
    }

}

⌨️ 快捷键说明

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