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

📄 emailreceiver.java

📁 使用javamail接收邮件
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
    
            if(folder == null)
            {
                throw new Exception("No POP3 INBOX");
            }
    	    
            // -- 以读写方式打开文件夹--
            folder.open(Folder.READ_WRITE);    
            
            Message [] msgs = new Message[1];       
            msgs[0] = mesg;
            folder.appendMessages(msgs);
              
           // folder.copyMessages(msgs, folder);
            
        }
        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 saveAsSent(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.Sent");
    
            if(folder == null)
            {
                throw new Exception("No POP3 INBOX");
            }
    	    
            // -- 以读写方式打开文件夹--
            folder.open(Folder.READ_WRITE);    
            
            Message [] msgs = new Message[1];       
            msgs[0] = mesg;
            folder.appendMessages(msgs);
              
           // folder.copyMessages(msgs, folder);
            
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
        finally
        {
            // -- 注意关闭 --
            try
            {
                if(folder != null)
                {
                    folder.close(true);
                }
                if(store != null)
                {
                    store.close();
                }
            }
            catch(Exception ex2)
            {
                ex2.printStackTrace();
            }
        }
    }
    
    
    public MessageBean addMessage(Message message)
    {
    	MessageBean messageBean = new MessageBean();
    	
        try
        {
            // 得到标头信息
           // String from = ((InternetAddress)message.getFrom()[0]).getPersonal();
        	String from = null;
        	String address=null;
        	Part messagePart = message;
        	String replay="";
        	try{
        		replay=message.getAllRecipients()[0].toString();
        	}catch(Exception ex){
        		replay="";
        	}
        	
        	
        	try{
	           	 if(replay.indexOf("=?x-unknown?") >=0){
	           		replay = replay.replaceAll("x-unknown","gbk" ); 
	           		replay = MimeUtility.decodeText(replay);
	           	 }else{
	           		replay = MimeUtility.decodeText(replay);
	           	 }
         	}catch(Exception ex){
       		
      	    }
       	 	
        	
        	if(message.getFrom()!=null){
        		from = message.getFrom()[0].toString();
    	        from = from.replace(" ","");
	        	from = from.replace(";","");
	        	from = from.replace(",","");
	        	from = from.replace("``''","");
        	
        	
	   
	        	InternetAddress ia=null;
	        	try{
	        		ia = new InternetAddress(from);	 
	        	}catch(Exception ex){
	        		ia = null;
	        	}
	        	
	        	if(ia==null){
	        		from="发件人不详";
	        	}else{
		        	try{
		            	 if(ia.getPersonal().indexOf("=?x-unknown?") >=0){
		            		 from = ia.getPersonal().replaceAll("x-unknown","gbk" ); 
		            		 from = MimeUtility.decodeText(from);
		            	 }else{
		            		 from = MimeUtility.decodeText(ia.getPersonal());
		            	 }
		        	}catch(Exception ex){
			            if( (ia.getPersonal()!=null)&&(ia.getPersonal().length()!=0) )
			            {
			            	 from = ia.getPersonal();
			            }else{
			            	 from = ia.getAddress();
			            }
		        	}
		        	address = ia.getAddress();
	        	}
        	}else{
        		from="发件人不详";
        	}
        	
        	
        	
        	try{
	            if(MimeUtility.decodeText(Util.isoToUtf8(from)).indexOf('?')<0){
	            	from =Util.isoToGBK(from);
	            }
        	}catch(Exception ex){
        		from = "发件人不详";
        	}

      //      String address = ia.getAddress();
            String subject = message.getSubject();
            

            if((subject==null)||(subject.length()==0)){
            	subject="无主题";
            }else if ( subject.indexOf("=?x-unknown?") >=0 ){
            	subject = subject.replaceAll("x-unknown","gbk" ); 
            	subject = MimeUtility.decodeText(subject);
            }else{
            	subject = MimeUtility.decodeText(subject);
            }
            
            if(MimeUtility.decodeText(Util.isoToUtf8(subject)).indexOf('?')<0){
            	subject =Util.isoToGBK(subject);
            //	System.out.println(MimeUtility.decodeText(Util.isoToUtf8(subject)).indexOf('?')+"ddddddddddddddddddd"+MimeUtility.decodeText(Util.isoToUtf8(subject)));
            }
    

            String sizeStr = getMessageSize(message);
            int sizeByte = getMessageSizeInt(message);
            Date fromDate = message.getReceivedDate();
            String fromDateS = Util.getFormatDate(fromDate);
            int emailId = message.getMessageNumber(); 
            boolean isSeen = message.isSet(Flags.Flag.SEEN);
            boolean isContainAttach=false;
            ArrayList attachmentNames = new ArrayList();
            try{
                attachmentNames = this.getAttachMentNames(messagePart);
             }catch(Exception e){
                	
             }
             if(attachmentNames.size()>0){
            	 isContainAttach = true;
             }
            
            
         // message.setFlag(Flags.Flag.DELETED,true);
            messageBean.setFrom(from);
            messageBean.setSubject(subject);
            messageBean.setSizeStr(sizeStr);
            messageBean.setFromDate(fromDate);
            messageBean.setEmailId(emailId);
            messageBean.setFromDateS(fromDateS);
            messageBean.setSizeInt(sizeByte);
            messageBean.setAddress(address);
         // messageBean.setMessageCount(messageCount);
        //  messageBean.setUnreadMessageCount(unreadMessageCount);
            messageBean.setSeen(isSeen);
            messageBean.setContainAttach(isContainAttach);
            messageBean.setReplay(replay);

        //  messageBean.setMessagePart(messagePart);

            /*
            // -- 得到消息部分(也就是说消息本身)--
            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();
                }
            }
            */
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
        return messageBean;
    }
    

   /* private static ArrayList getAttachmentNames(Part messagePart) {
		// TODO Auto-generated method stub
		return null;
	}*/

	/** 
     * 判断此邮件是否包含附件 
     */ 
    public boolean isContainAttach(Part part)throws Exception{ 
        boolean attachflag = false; 
        String contentType = part.getContentType(); 
        if(part.isMimeType("multipart/*")){ 
            Multipart mp = (Multipart)part.getContent(); 
            for(int i=0;i<mp.getCount();i++){ 
                BodyPart mpart = mp.getBodyPart(i); 
                String disposition = mpart.getDisposition(); 
                if((disposition != null) &&((disposition.equals(Part.ATTACHMENT)) ||(disposition.equals(Part.INLINE)))) 
                    attachflag = true; 
                else if(mpart.isMimeType("multipart/*")){ 
                    attachflag = isContainAttach((Part)mpart); 
                }else{ 
                    String contype = mpart.getContentType(); 
                    if(contype.toLowerCase().indexOf("application") != -1) attachflag=true; 
                    if(contype.toLowerCase().indexOf("name") != -1) attachflag=true; 
                } 
            } 
        }else if(part.isMimeType("message/rfc822")){ 
            attachflag = isContainAttach((Part)part.getContent()); 
        } 
        return attachflag; 
    } 
    
     
    /** 
     * 【保存附件】 
     */ 
    public void saveAttachMent(Part part)throws Exception{ 
        String fileName = ""; 
        if(part.isMimeType("multipart/*")){ 
            Multipart mp = (Multipart)part.getContent(); 
            for(int i=0;i<mp.getCount();i++){ 
                BodyPart mpart = mp.getBodyPart(i); 
                String disposition = mpart.getDisposition(); 
                if((disposition != null) &&((disposition.equals(Part.ATTACHMENT)) ||(disposition.equals(Part.INLINE)))){ 
                    fileName = mpart.getFileName(); 
                    if(fileName.toLowerCase().indexOf("gb") != -1){ 
                        fileName = MimeUtility.decodeText(fileName); 
                    } 
                                        saveFile(fileName,mpart.getInputStream()); 
                }else if(mpart.isMimeType("multipart/*")){ 
                    saveAttachMent(mpart); 
                }else{ 
                    fileName = mpart.getFileName(); 
                    if((fileName != null) && (fileName.toLowerCase().indexOf("gb") != -1)){ 
                        fileName=MimeUtility.decodeText(fileName); 
                        saveFile(fileName,mpart.getInputStream()); 
                    } 
                } 
            } 
        }else if(part.isMimeType("message/rfc822")){ 
            saveAttachMent((Part)part.getContent()); 
        } 
    } 
     
    /** 
     * 【设置附件存放路径】 
     */ 
    public void setAttachPath(String attachpath){ 
        this.saveAttachPath = attachpath; 
    } 
     
    /** 
     * 【设置日期显示格式】 
     */ 
    public void setDateFormat(String format)throws Exception{ 
        this.dateformat = format; 
    } 
     
    /** 
     * 【获得附件存放路径】 
     */ 
    public String getAttachPath(){ 
        return saveAttachPath; 
    } 
 
    
}

⌨️ 快捷键说明

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