Topic: 收POP EMAIL 的程序 |
Print this page |
1.收POP EMAIL 的程序 | Copy to clipboard |
Posted by: David_Zhuo Posted on: 2002-12-19 14:01 Beef 于 2002-10-22 19:34:31 加贴: import java.io.*; import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; /** * Title: * Description: * Copyright: Copyright 2002 * Company: * @author * @version 1.0 */ public class GetPopEmail { private String protocol = "pop3"; private String host = ""; private String user = ""; private String password = ""; private String attachFileSavePath = ""; private boolean isDeleteEmailAfterGetFlag = false; // public GetPopEmail() { // } public GetPopEmail(String host, String user,String password, String attachFileSavePath) { this.host = host; this.user = user; this.password = password; this.attachFileSavePath = attachFileSavePath; } public void setDeleteEmailAfterGetFlag(boolean isDeleteEmailAfterGetFlag) { this.isDeleteEmailAfterGetFlag = isDeleteEmailAfterGetFlag; } public Collection getAllEmail() { System.out.println("getPopEmail: start"); ArrayList arlstEmailModels = new ArrayList(); EmailModel emailModel = null; String url = null; String root = null; boolean debug = false; Store store = null; javax.mail.Folder rf = null; javax.mail.Folder rootFolder = null; javax.mail.Folder inbox = null; try { // Get a Properties object Properties props = System.getProperties(); // Get a Session object // javax.mail.Session session = Session.getDefaultInstance(new Properties(), null); javax.mail.Session session = Session.getDefaultInstance(props, null); session.setDebug(debug); // Get a Store object store = session.getStore(protocol); // Logger.log.log(Logger.APP1,this,"getAllEmail","host=" + host + "<<<<"); // Logger.log.log(Logger.APP1,this,"getAllEmail","user=" + user + "<<<<"); // Logger.log.log(Logger.APP1,this,"getAllEmail","password=" + password + "<<<<"); store.connect(host, 110, user, password); // // フォルダをひらく // rootFolder = store.getDefaultFolder(); inbox = rootFolder.getFolder("INBOX"); inbox.open(Folder.READ_WRITE); System.out.println("メール:" + inbox.getMessageCount() + "枚"); javax.mail.Message[] allMsg = inbox.getMessages(); // 全部取得 for (int i = 0; i < allMsg.length; i++ ) { System.out.println("----"); System.out.println("No." + Integer.toString(i + 1)); System.out.println("----"); System.out.println("Subject : " + allMsg[i].getSubject()); System.out.println("Date : " + allMsg[i].getSentDate()); emailModel = new EmailModel(); String strSubject = allMsg[i].getSubject(); java.util.Date sentDate = allMsg[i].getSentDate(); java.util.Date recieveDate = allMsg[i].getReceivedDate(); emailModel.setSubject(strSubject); if(sentDate != null) { emailModel.setSentDate(new java.sql.Timestamp(sentDate.getTime())); } if(recieveDate != null) { emailModel.setRecieveDate(new java.sql.Timestamp(recieveDate.getTime())); } Address[] from = allMsg[i].getFrom(); Address[] to = null; try { to = allMsg[i].getRecipients(javax.mail.Message.RecipientType.TO); } catch(javax.mail.internet.AddressException addressE) { addressE.printStackTrace(); } String[] strFromAddress = new String[from.length]; String[] strToAddress = null; for(int i1=0;i1<from.length;i1++) { strFromAddress[i1] = from[i1].toString(); } if(to != null) { strToAddress = new String[to.length]; for(int i2=0;i2<to.length;i2++) { strToAddress[i2] = to[i2].toString(); } } emailModel.setAttachSaveFilePath(this.attachFileSavePath); emailModel.setFromAddress(strFromAddress); emailModel.setToAddress(strToAddress); if (from != null) { for (int n = 0; n < from.length; n++) { System.out.println("From : " + from[n]); } } if (to != null) { for (int n = 0; n < to.length; n++) { System.out.println("To : " + to[n]); } } System.out.println(); Object body = null; System.out.println("allMsg[i].getContentType()=" + allMsg[i].getContentType()); System.out.println("allMsg[i].getDisposition()=" + allMsg[i].getDisposition()); ///////////// get content //////////////////////////// body = allMsg[i].getContent(); ArrayList arlstAttachFileName = new ArrayList(); if(body instanceof String) { System.out.println("This is a normal email that has no attach file"); System.out.println(body.toString()); emailModel.setContent((String)body); } else if (body instanceof Multipart) { System.out.println("This is a multipart email.body.getClass().getName()=" + body.getClass().getName()); Multipart mp = (Multipart)body; int count3 = mp.getCount(); System.out.println("It has " + count3 + " BodyParts in it**"); for (int j = 0; j < count3; j++) { // Part are numbered starting at 0 BodyPart b = mp.getBodyPart(j); String mimeType = b.getContentType(); System.out.println( "BodyPart " + (j + 1) + " is of MimeType " + mimeType); Object o2 = b.getContent(); if (o2 instanceof String) { System.out.println("**This is a String BodyPart**"); System.out.println((String)o2); emailModel.setContent((String)o2); } else if (o2 instanceof Multipart) { System.out.print( "**This BodyPart is a nested Multipart. "); Multipart mp2 = (Multipart)o2; int count2 = mp2.getCount(); System.out.println("It has " + count2 + "further BodyParts in it**"); } else if (o2 instanceof InputStream) { System.out.println("b.getFileName()=" + allMsg[i].getFileName()); System.out.println( "**This is an InputStream BodyPart**"); String strFileName = saveAttachFile((InputStream)o2,b.getFileName()); if(o2 != null) { try { ((InputStream)o2).close(); } catch(java.io.IOException ioe1){} } arlstAttachFileName.add(strFileName); } } //End of for } else if (body instanceof InputStream) { System.out.println("content is Inputsteam"); System.out.println("b.getFileName()=" + allMsg[i].getFileName()); System.out.println( "**This is an InputStream BodyPart**"); String strFileName = saveAttachFile((InputStream)body,allMsg[i].getFileName()); if(body != null) { try { ((InputStream)body).close(); } catch(java.io.IOException ioe1){} } arlstAttachFileName.add(strFileName); } ////////////////////////////// String[] strAttachFileName = new String[arlstAttachFileName.size()]; for(int i3=0;i3<arlstAttachFileName.size();i3++) { strAttachFileName[i3] = (String)arlstAttachFileName.get(i3); } emailModel.setAttachSaveFileNames(strAttachFileName); arlstEmailModels.add(emailModel); if(this.isDeleteEmailAfterGetFlag) { allMsg[i].setFlag(Flags.Flag.SEEN,true); } else { allMsg[i].setFlag(Flags.Flag.SEEN,true); } } } catch(Exception e) { e.printStackTrace(); } finally { try { inbox.close(true); store.close(); } catch(javax.mail.MessagingException messgingE) {} } System.out.println("getPopEmail: end"); return arlstEmailModels; } private String saveAttachFile(InputStream is,String strOriginFileName) { System.out.println("saveAttach:start"); String strExtFileName = ".gif"; int index = 0; if(strOriginFileName != null) { index = strOriginFileName.lastIndexOf("."); strExtFileName = strOriginFileName.substring(index); } GregorianCalendar greCalendTmp = new GregorianCalendar(); String strFileName = Integer.toString(greCalendTmp.get(GregorianCalendar.YEAR)) + Integer.toString(greCalendTmp.get(GregorianCalendar.MONTH)) + Integer.toString(greCalendTmp.get(GregorianCalendar.DAY_OF_MONTH)) + Integer.toString(greCalendTmp.get(GregorianCalendar.HOUR_OF_DAY)) + Integer.toString(greCalendTmp.get(GregorianCalendar.MINUTE)) + Integer.toString(greCalendTmp.get(GregorianCalendar.SECOND)) + Integer.toString(greCalendTmp.get(GregorianCalendar.MILLISECOND)) + strExtFileName; FileOutputStream fosAttach = null; InputStream isAttach = null; byte[] byTmp = new byte[1024]; int iReaded = 0; try { File fileAttach = new File(this.attachFileSavePath,strFileName); if(!fileAttach.exists()) { fileAttach.createNewFile(); } fosAttach = new FileOutputStream(fileAttach); while(true) { iReaded = is.read(byTmp,0,1024); if(iReaded == -1) { break; } fosAttach.write(byTmp,0,iReaded); } } catch(java.io.IOException ioE) { ioE.printStackTrace(); } finally { if(fosAttach != null) { try { fosAttach.close(); } catch(java.io.IOException ioe1){} } } return strFileName; } public class EmailModel implements java.io.Serializable { private String[] strFromAddress = null; private String[] strToAddress = null; private String strSubject = ""; private String strContent = ""; private String[] strAttachSaveFileNames = null; private String strAttachSaveFilePath = ""; private java.sql.Timestamp recieveDate = null; private java.sql.Timestamp sentDate = null; public EmailModel() { } public void setFromAddress(String[] strFromAddress) { this.strFromAddress = strFromAddress; } public void setToAddress(String[] strToAddress) { this.strToAddress = strToAddress; } public void setContent(String strContent) { this.strContent = strContent; } public void setAttachSaveFileNames(String[] strAttachSaveFileNames) { this.strAttachSaveFileNames = strAttachSaveFileNames; } public void setAttachSaveFilePath(String strAttachSaveFilePath) { this.strAttachSaveFilePath = strAttachSaveFilePath; } public void setSubject(String strSubject) { this.strSubject = strSubject; } public void setSentDate(java.sql.Timestamp sentDate) { this.sentDate = sentDate; } public void setRecieveDate(java.sql.Timestamp recieveDate) { this.recieveDate = recieveDate; } public String[] getFromAddress() { return this.strFromAddress; } public String[] getToAddress() { return this.strToAddress; } public String getContent() { return this.strContent; } public String[] getAttachSaveFileNames() { return this.strAttachSaveFileNames; } public String getAttachSaveFilePath() { return this.strAttachSaveFilePath; } public String getSubject() { return this.strSubject; } public java.sql.Timestamp getSentDate() { return this.sentDate; } public java.sql.Timestamp getRecieveDate() { return this.recieveDate; } } } |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |