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

📄 emailreceiver.java

📁 使用javamail接收邮件
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        String fullDir = storedir+separator+fileName;
        File storefile = new File(fullDir); 
        System.out.println("storefile's path: "+storefile.toString()); 
        //for(int i=0;storefile.exists();i++){ 
            //storefile = new File(storedir+separator+fileName+i); 
        //} 
        BufferedOutputStream bos = null; 
        BufferedInputStream  bis = null; 
        try{ 
            bos = new BufferedOutputStream(new FileOutputStream(storefile)); 
            bis = new BufferedInputStream(in); 
            int c; 
            while((c=bis.read()) != -1){ 
                bos.write(c); 
                bos.flush(); 
            } 
        }catch(Exception exception){ 
            exception.printStackTrace(); 
            throw new Exception("文件保存失败!"); 
        }finally{ 
            bos.close(); 
            bis.close(); 
        } 
        return fileName;
    } 
    /**
     * "printMessage()" 方法打印一条消息.
     */
    public static void printMessage(Message message)
    {
        try
        {
            // 得到标头信息
            String from = ((InternetAddress)message.getFrom()[0]).getPersonal();
            if(from == null)
            {
                from = ((InternetAddress)message.getFrom()[0]).getAddress();
            }
            System.out.println("FROM: " + from);
            String subject = message.getSubject();
            System.out.println("SUBJECT: " + subject);
            // -- 得到消息部分(也就是说消息本身)--
            Part messagePart = message;
            Object content = messagePart.getContent();
            // --如果是multipart消息,就是其第一个body part--
            if(content instanceof Multipart)
            {
                messagePart = ((Multipart)content).getBodyPart(0);
                System.out.println("[ Multipart Message ]");
            }
            // -- 得到类型--
            String contentType = messagePart.getContentType();
            // -- 如果内容是plain文本,我们可以打印它--
            System.out.println("CONTENT:" + contentType);
            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)
                {
                    System.out.println(thisLine);
                    thisLine = reader.readLine();
                }
            }
            System.out.println("-----------------------------");
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }
    
    protected static String decodeText(String text) throws UnsupportedEncodingException{
    	  if(text==null)
    	   return null;
    	  if (text.startsWith("=?GB") || text.startsWith("=?gb"))
    	   text = MimeUtility.decodeText(text);
    	  else 
    	   text = new String(text.getBytes("ISO8859_1"));  
    	  return text;  
    	 }
    
    public static String getFromBASE64(String s) { 
        if (s == null) return null; 
        BASE64Decoder decoder = new BASE64Decoder(); 
        try { 
          byte[] b = decoder.decodeBuffer(s); 
          return new String(b); 
        } catch (Exception e) { 
          return null; 
        } 
      } 
    
    //中文问题终极解决方案
    public static String decodeWord(String s)
    {
        if(!s.startsWith("=?"))
            return s;
        int i = 2;
        int j;
        if((j = s.indexOf(63, i)) == -1)
            return s;
        String s1 = (s.substring(i, j));
        i = j + 1;
        if((j = s.indexOf(63, i)) == -1)
            return s;
        String s2 = s.substring(i, j);
        i = j + 1;
        if((j = s.indexOf("?=", i)) == -1)
            return s;
        String s3 = s.substring(i, j);
        try
        {
            ByteArrayInputStream bytearrayinputstream = new ByteArrayInputStream(s3.getBytes());
            Object obj;
            if(s2.equalsIgnoreCase("B"))
                obj = new BASE64DecoderStream(bytearrayinputstream);
            else
            if(s2.equalsIgnoreCase("Q"))
                obj = new QDecoderStream(bytearrayinputstream);
            else
                return s;
            int k = bytearrayinputstream.available();
            byte abyte0[] = new byte[k];
            k = ((InputStream) (obj)).read(abyte0, 0, k);
            return new String(abyte0, 0, k );
        }
        catch(Exception ex)
        {
            return s;
        }
    }

    
    //得到邮件大小
    public static String getMessageSize(Message currentMessage)
    throws MessagingException{
    	String size="?";
	    int bsize=currentMessage.getSize();
	    if( (bsize<0)&&(bsize!=-1) ){
	    	bsize=-bsize;
	    }
	    if (bsize!=-1){
	    	if (bsize>=1024*1024){
	    		int mbsize=bsize/(1024*1024);
	    		size=mbsize+"MB";
	    		}else if(bsize>=1024){
	    			int kbsize=bsize/1024;
	    			size=kbsize+"KB";
	    			}else{
	    				size=bsize+"Bytes";
	    				}
	    	}
	    return size;
	    }
    
    public static int getMessageSizeInt(Message currentMessage)
    throws MessagingException{
    	int size=0;
	    int bsize=currentMessage.getSize();
	    if( (bsize<0)&&(bsize!=-1) ){
	    	bsize=-bsize;
	    }
	    return size;
	 }
    
    
    public void showMessage(String popServer,String popUser,String popPassword,String messageNum,String whitchBox)
    {
        Store store = null;
        Folder folder = null;

        try
        {
            // -- 得到缺省会话--
            Properties props = System.getProperties();
            Session session = Session.getDefaultInstance(props,null);
            session.setDebug(true);
            // -- 得到一个POP3消息存储设备并与它连接--
            store = session.getStore("imap");
            store.connect(popServer,popUser,popPassword);
            // -- 得到缺省文件夹--
            folder = store.getDefaultFolder();
            if(folder == null)
            {
                throw new Exception("No default folder");
            }
            
            // -- ...以及收件箱 --
            if(whitchBox.equals("receiveBox")){
            	folder = folder.getFolder("INBOX");
            }else if(whitchBox.equals("sendBox")){
            	folder = folder.getFolder("INBOX.Sent");
            }else if(whitchBox.equals("draftBox")){
            	folder = folder.getFolder("INBOX.Drafts");
            }else{
            	folder = folder.getFolder("INBOX.Trash");
            }
  
    
            if(folder == null)
            {
                throw new Exception("No POP3 INBOX");
            }
    	    
            // -- 以读写方式打开文件夹--
            folder.open(Folder.READ_WRITE);

            // -- 得到消息包并进行处理--
            Message[] msgs = folder.getMessages();
            
            for(int msgNum = 0;msgNum < msgs.length;msgNum++)
            {
               printMessage(msgs[msgNum]);
            }
        
            
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
        finally
        {
            // -- 注意关闭 --
            try
            {
                if(folder != null)
                {
                    folder.close(true);
                }
                if(store != null)
                {
                    store.close();
                }
            }
            catch(Exception ex2)
            {
                ex2.printStackTrace();
            }
        }
    }
    
    
    public void deleteMessage(String popServer,String popUser,String popPassword,String [] messageNum,String whitchBox,String isAll)
    {
        Store store = null;
        Folder folder = null;

        try
        {
            // -- 得到缺省会话--
            Properties props = System.getProperties();
            Session session = Session.getDefaultInstance(props,null);
            session.setDebug(true);
            // -- 得到一个POP3消息存储设备并与它连接--
            store = session.getStore("imap");
            store.connect(popServer,popUser,popPassword);
            // -- 得到缺省文件夹--
            folder = store.getDefaultFolder();
            if(folder == null)
            {
                throw new Exception("No default folder");
            }
            
            // -- ...以及收件箱 --
            Folder folderTrash = folder.getFolder("INBOX.Trash");
            if(whitchBox.equals("receiveBox")){
            	folder = folder.getFolder("INBOX");
            }else if(whitchBox.equals("sendBox")){
            	folder = folder.getFolder("INBOX.Sent");
            }else if(whitchBox.equals("draftBox")){
            	folder = folder.getFolder("INBOX.Drafts");
            }else{
            	folder = folder.getFolder("INBOX.Trash");
            }
  
    
            if(folder == null)
            {
                throw new Exception("No POP3 INBOX");
            }
    	    
            // -- 以读写方式打开文件夹--
            folder.open(Folder.READ_WRITE);

            // -- 得到消息包并进行处理--
            Message[] msgs = folder.getMessages();
            ArrayList msgsArr = new ArrayList();
     
            for(int msgNum = 0;msgNum < msgs.length;msgNum++)
            {
            	for(int j=0;j<messageNum.length;j++)
            	{
            		if(Util.processInt(messageNum[j])==msgs[msgNum].getMessageNumber())
            		{
            			msgsArr.add(msgs[msgNum]);
            		}
            	}
              
            }
           
            Message[] msgsNew =new Message[msgsArr.size()];
            for(int msgNumNew=0;msgNumNew<msgsArr.size();msgNumNew++)
            {
                msgsNew[msgNumNew]= (Message)msgsArr.get(msgNumNew);
            }
            
            if( (!whitchBox.equals("trashBox"))&&(isAll==null) ){
            	folder.copyMessages(msgsNew, folderTrash);
            }
                     
            for(int i=0;i<msgsNew.length;i++)
            {
            	msgsNew[i].setFlag(Flags.Flag.DELETED,true); 
            }
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
        finally
        {
            // -- 注意关闭 --
            try
            {
                if(folder != null)
                {
                    folder.close(true);
                }
                if(store != null)
                {
                    store.close();
                }
            }
            catch(Exception ex2)
            {
                ex2.printStackTrace();
            }
        }
    }
    
    
    public static void saveAsDraft(String popServer,String popUser,String popPassword,Message mesg)
    {
        Store store = null;
        Folder folder = null;

        try
        {
            // -- 得到缺省会话--
            Properties props = System.getProperties();
            Session session = Session.getDefaultInstance(props,null);
            session.setDebug(true);
            // -- 得到一个POP3消息存储设备并与它连接--
            store = session.getStore("imap");
            store.connect(popServer,popUser,popPassword);
            // -- 得到缺省文件夹--
            folder = store.getDefaultFolder();
            if(folder == null)
            {
                throw new Exception("No default folder");
            }
            
            // -- ...以及收件箱 --
            folder = folder.getFolder("INBOX.Drafts");

⌨️ 快捷键说明

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