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

📄 receivemail.java

📁 功能是公安和学校的管理系统,用struts+hibernate+spring等匡架组成,在eclepse就能编译
💻 JAVA
字号:
package com.comingnet.bean;
import com.comingnet.tool.Convert;
import com.comingnet.tool.ConvertDate;
import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.Folder;
import javax.mail.internet.*;
import javax.mail.search.*;
import com.db.*;
import java.sql.*;

public class ReceiveMail {
	
	private String strcontenttype;
    private java.util.Date myDate;
    private String straddr;
    private String sendaddr;
    private String recieveaddr;
    private String ccstr;
    private String subjectstr;
    private String contentstr;
    private String strdisk;
    private boolean isDeleteServer=true;
    private Connection conn=null;
    private PreparedStatement stmt=null;
    
  public ReceiveMail()
  {
	  
  }
  
  public void receiveMail(EmailAccount emailcount,String strdisk)
  {
	    System.out.println("正在接收外部邮件");  
	    this.strdisk=strdisk;
	    Store store=null;
		Folder folder=null;
		try{

			Properties props = new Properties();
			props.put("mail.pop3.host", emailcount.getZhpop());
	        Session mailSession = Session.getInstance(props, null);
	        store = mailSession.getStore("pop3");
	        store.connect(emailcount.getZhpop(),emailcount.getZhyh(),emailcount.getZhmm());
	        folder = store.getFolder("INBOX");
	        try
	        {
	            folder.open(2);
	        }
	        catch(MessagingException ex)
	        {
	            folder.open(1);
	            ex.printStackTrace();
	        }
	        Message message[] = folder.getMessages();
	        int messageCount = message == null ? 0 : message.length;

	        try
	        {
	            for(int i = 0; message != null && i < message.length; i++)
	            {
	            	strcontenttype= message[i].getContentType();
	                myDate = message[i].getSentDate();
	                Address rt[] = message[i].getReplyTo();
	                Address fr[] = message[i].getFrom();
	                Address TO[] = message[i].getRecipients(javax.mail.Message.RecipientType.TO);
	                Address CC[] = message[i].getRecipients(javax.mail.Message.RecipientType.CC);
	                subjectstr = message[i].getSubject().toString();
	                Object objContent = message[i].getContent();
	                straddr = "";
	                if(rt != null)
	                {
	                    for(int k = 0; k < rt.length; k++)
	                    {
	                        straddr = straddr+";"+getDisplayAddress(rt[k]);
	                    }    
	                }
	                
	                sendaddr = "";
	                if(fr != null)
	                {
	                    for(int k = 0; k < fr.length; k++)
	                        sendaddr = sendaddr+";"+getDisplayAddress(fr[k]);
	                }
	                recieveaddr = "";
	                if(TO != null)
	                {
	                    for(int k = 0; k < TO.length; k++)
	                        recieveaddr = recieveaddr+";"+getDisplayAddress(TO[k]);
	                }
	                ccstr = "";
	                if(CC != null)
	                {
	                    for(int k = 0; k < CC.length; k++)
	                        ccstr = ccstr+";"+getDisplayAddress(CC[k]);
	                }
	                if(Convert.isCnChar(MimeUtility.decodeText(subjectstr)))
	                    subjectstr = MimeUtility.decodeText(subjectstr);
	                else 
	                {
	                    try
	                    {
	                        if(Convert.isCnChar(MimeUtility.decodeWord(subjectstr)))
	                            subjectstr = MimeUtility.decodeWord(subjectstr);
	                    }
	                    catch(Exception exception) {
	                    	System.out.println("-------------------------->"+exception);
	                    }
	                }  
	                
	                System.out.println("message["+i+"]:"+message[i].isMimeType("text/*"));
	                System.out.println("message["+i+"]:"+message[i].isMimeType("multipart/*"));
	                if(message[i].isMimeType("text/plain") || message[i].isMimeType("text/html"))
	                {
	                	contentstr = (String)objContent;
	                	System.out.println("文件内容:"+contentstr);
	                }
	                else  if(message[i].isMimeType("multipart/*"))
	                {
	                    System.out.println("到这里!");
	                	Multipart mp = (Multipart)objContent;
	                    BodyPart bodyPart = mp.getBodyPart(0);
	                    if(bodyPart.isMimeType("text/*"))
	                    {
	                        try
	                        {
	                            contentstr = (String)bodyPart.getContent();
	                            //contentstr = MimeUtility.decodeWord(contentstr);
	                            System.out.println(contentstr);
	                        }
	                        catch(ParseException parseexception) { 
	                        	System.out.println("到这里3:"+parseexception);
	                        }
	                        catch(UnsupportedEncodingException unsupportedencodingexception) { 
	                        	System.out.println("到这里4:"+unsupportedencodingexception);
	                        }
	                    }else
	                    {
	                    	System.out.println("到这里2!");
	                    }
	                } else
	                {
	                    contentstr = "";
	                }
	                contentstr = Convert.toHtml(contentstr);
	                java.util.Date today = new java.util.Date();
	                String strDate = Convert.dateToString(today);
	                String before = Convert.dateToString(today);
	                String last = Convert.dateToString((new ConvertDate()).dayAfter(today, 36500));
	                if(myDate != null)
	                {
	                    before = Convert.dateToString(myDate);
	                    last = Convert.dateToString((new ConvertDate()).dayAfter(myDate, 36500));
	                }
	                System.out.println(before+"          "+last);
	                int yjid=KeyGenerator.getInstance().getNextKey("yjxx");
	                String sqlStr="insert into yjxx(yjid,yjwbzs,yjwbcs,yjfssj,yjgqsj,yjsj,yjbt,yjnr,yjfjdz) values(?,?,?,?,?,?,?,?,?)";
	                int yjxxcount=0;
	                try
	                {  //向yjxx表中插入收到的邮件基本信息
	                	conn=DBUtils.getConnection();
	                	stmt=conn.prepareStatement(sqlStr);
	                	stmt.setInt(1,yjid);
	                	stmt.setString(2,recieveaddr);
	                	stmt.setString(3,ccstr);
	                	stmt.setString(4,before);
	                	stmt.setString(5,last);
	                	stmt.setString(6,before);
	                	stmt.setString(7,subjectstr);
	                	stmt.setString(8,contentstr);
	                	stmt.setString(9,sendaddr);
	                	yjxxcount=stmt.executeUpdate();
	                	
	                }catch(Exception e)
	                {
	                	System.out.println(e);
	                }finally
	                {
	                	DBUtils.closeStatement(stmt);
	                }
                    if(yjxxcount>0)
                    {
                    	//如果向yjxx表中插入数据成功,那么向yjsj表中插入收件的信息
                    	int sjid=KeyGenerator.getInstance().getNextKey("yjsj");
                    	sqlStr="insert into yjsj(sjid,yjid,ryid,ryclass,xxbh,rywjj,rylx) values(?,?,?,?,?,?,?)";
                    	stmt=conn.prepareStatement(sqlStr);
                    	stmt.setInt(1,sjid);
                    	stmt.setInt(2,yjid);
                    	stmt.setInt(3,emailcount.getZhry());
                    	stmt.setString(4,emailcount.getZhryclass());
                    	stmt.setInt(5,emailcount.getXxbh());
                    	stmt.setInt(6,emailcount.getZhwjj());
                    	stmt.setInt(7,1);
                    	stmt.executeUpdate();
                    	DBUtils.closeStatement(stmt);
                    	System.out.println("收件");
                    }
	                
	                if(objContent instanceof Multipart)
                    {   //如果存在附件
	                	Multipart mp = (Multipart)objContent;
                        try
                        {
                            for(int n = 0; mp != null && n < mp.getCount(); n++)
                            {
                                Part part = mp.getBodyPart(n);
                                String disposition = part.getDisposition();
                                if(disposition != null && (disposition.equals("attachment") || disposition.equals("inline")))
                                {
                                    String filename = part.getFileName();
                                    if(filename == null)
                                    {
                                        filename = " ";
                                    } else
                                    {
                                        if(disposition.equals("attachment"))
                                        {
                                        	filename = MimeUtility.decodeText(filename);
                                        }
                                            
                                        if(disposition.equals("inline"))
                                            filename = Convert.toGBK(filename);
                                        System.out.println("filemane"+filename);
                                        //filename = Convert.toGBK(filename);
                                        String annex_name = saveFile(filename, part.getInputStream());
                                        System.out.println("修改后文件名:"+annex_name);
                                        String annex_path = "oa/upload/mail/"+filename;
                                        int annex_size = part.getSize();                         //附件大小
                                        int fjid=KeyGenerator.getInstance().getNextKey("yjfj");
                                        sqlStr="insert into yjfj(fjid,fjoldname,fjnewname,yjid,fjdx) values(?,?,?,?,?)";
                                        stmt=conn.prepareStatement(sqlStr);
                                        stmt.setInt(1,fjid);
                                        stmt.setString(2,filename);
                                        stmt.setString(3,annex_name);
                                        stmt.setInt(4,yjid);
                                        stmt.setInt(5,annex_size/1024);
                                        stmt.executeUpdate();
                                        DBUtils.closeStatement(stmt);
                                    }
                                }
                            }

                        }
                        catch(Exception exception1) { }
                    }
	                DBUtils.closeConnection(conn);
	                
	                if(isDeleteServer)
	                {
	                	message[i].setFlag(javax.mail.Flags.Flag.DELETED, true);
	                	System.out.println("删除邮件");
	                }
                        
	              }
	        }catch(Exception e)
	        {
	        	System.out.println("=============================================>"+e);
	        }
		}catch (Exception ex)
		{
	        ex.printStackTrace();
	    }finally
	     {
            try
            {
                if(isDeleteServer)
                    folder.close(true);
                else
                    folder.close(false);
                store.close();
            }
            catch(Exception exception3) { }
        }
  }
  
  public String getDisplayAddress(Address a)
  {
      String pers = null;
      String addr = null;
      if((a instanceof InternetAddress) && (pers = ((InternetAddress)a).getPersonal()) != null)
          addr = pers+" "+"<"+((InternetAddress)a).getAddress()+">";
      else
          addr = a.toString();
      return addr;
  }

  
   
  
  
  public String saveFile(String filename, InputStream inputStream)
  {
      String retFileName = null;
      String sysFileName = null;
      int iExt = filename.indexOf(".");
      String longTime = Long.toString((new java.util.Date()).getTime());
      String fileFirst = longTime;
      String fileExt = "";
      if(iExt > 0)
      {
          fileFirst = longTime;
          fileExt = filename.substring(iExt + 1, filename.length());
          sysFileName = longTime+"."+fileExt;
      } else
      {
          sysFileName = longTime;
      }
      retFileName =strdisk+sysFileName;
      try
      {
          File file = new File(retFileName);
          for(int i = 0; file.exists(); i++)
          {
              if(iExt > 0)
                  sysFileName = fileFirst+Integer.toString(i)+"."+fileExt;
              else
                  sysFileName = fileFirst+Integer.toString(i);
              retFileName = strdisk+sysFileName;
              file = new File(retFileName);
          }

          byte bRead[] = new byte[inputStream.available()];
          inputStream.read(bRead);
          FileOutputStream fos = new FileOutputStream(file);
          fos.write(bRead);
          fos.close();
      }
      catch(Exception e)
      {
          System.out.println(e);
      }
      return sysFileName;
  }
}

⌨️ 快捷键说明

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