?? receivemail.java
字號:
package mail;import javax.mail.*; //引用javax.mail包,此包中包含Store、Transport等重要類import javax.mail.internet.*;import javax.activation.*;import java.util.*;import java.io.*;public class ReceiveMail{ private String host = ""; //Mail server名 private String user = ""; //用戶名 private String pwd = ""; //密碼 private Message message[]; //message對象數(shù)組 private Store store; //store對象 private Folder folder; public ReceiveMail() { //空構(gòu)造函數(shù),讀者可以給里面加入相應(yīng)內(nèi)容,以擴(kuò)大此程序的功能 } public int connectHost(String host,String user,String pwd) //連接pop3服務(wù)器,收email { try { setHost(host); //設(shè)置服務(wù)器名 setUser(user); //設(shè)置用戶名 setPwd(pwd); //設(shè)置密碼 Session sessionmail =Session.getInstance(new Properties(),null); //得到Session對象 store=sessionmail.getStore("pop3"); //得到Store對象 store.connect(host,user,pwd); //連接服務(wù)器 folder=store.getFolder("INBOX"); //得到默認(rèn)的收件箱文件夾 folder.open(Folder.READ_WRITE); //打開此文件夾 message=folder.getMessages(); //得到message對象數(shù)組 return 1; //成功返回1 } catch(Exception e) { return 0; //失敗返回0 } } //設(shè)置接收郵件服務(wù)器的地址 private void setHost(String str) { host = str; } //設(shè)置用戶名 private void setUser(String str) { user = str; } //設(shè)置密碼 private void setPwd(String str) { pwd = str; } //得到發(fā)件人的Vector public Vector getFrom() { Vector v_from = new Vector(); try { for(int i=0;i < message.length;i++) { //通過標(biāo)記找出沒有被標(biāo)記為刪除的郵件 if (!message[i].isSet(Flags.Flag.DELETED)) { //由于getFrom方法返回的是一個發(fā)件人的數(shù)組,但大多數(shù)情況發(fā)件人是一個人,所以數(shù)組下標(biāo)用0 v_from.addElement(getChineseStr(message[i].getFrom()[0].toString())); } } } catch(Exception e) //發(fā)生異常的處理 { System.out.println("getFrom Error:"+e); v_from.clear(); } return v_from; //返回Vector } //得到郵件是否被閱讀過的標(biāo)記 public Vector getFlag() { Vector v_flag = new Vector(); try { for(int i=0;i < message.length;i++) { if (!message[i].isSet(Flags.Flag.DELETED)) { //有些郵件系統(tǒng)不支持Flags.Flag.SEEN這個標(biāo)記,所以無法判斷是否是新郵件 //實例中用的Imail Server就不支持該標(biāo)記,所以通過這個方法判斷不出郵件 //是否是新郵件 if (message[i].isSet(Flags.Flag.SEEN)) { v_flag.addElement("seen"); //看過的郵件 } else { v_flag.addElement("new"); //新郵件 } } } } catch(Exception e) //發(fā)生異常后的處理 { System.out.println("getFlag Error:"+e); v_flag.clear(); } return v_flag; //返回Vector } //得到郵件的主題Vector public Vector getSubject() { Vector v_subject=new Vector(); try { for(int i=0;i < message.length;i++) { if (!message[i].isSet(Flags.Flag.DELETED)) { //調(diào)用getChineseStr顯示中文標(biāo)題,有些郵件系統(tǒng)不支持中文標(biāo)題,我用的imail server這個版本 //就不支持中文標(biāo)題,郵件內(nèi)容也是一樣 v_subject.addElement(getChineseStr(message[i].getSubject())); } } } catch(Exception e) //發(fā)生異常后的處理 { System.out.println("getSubject Error:"+e); v_subject.clear(); } return v_subject; //返回Vector } //得到郵件內(nèi)容的Vector public Vector getContent() { Vector v_content=new Vector(); try { for(int i=0;i < message.length;i++) { if (!message[i].isSet(Flags.Flag.DELETED)) { Object content=message[i].getContent(); //普通的文本文件,本實例沒有涉及到復(fù)雜的郵件(html郵件,帶附件的郵件等) //感興趣的讀者可以通過本實例舉一反三 if (message[i].isMimeType("text/plain")) { //調(diào)用getChineseStr顯示中文內(nèi)容。 v_content.addElement(getChineseStr(content.toString())); } else if(message[i].isMimeType("multipart/*")) //復(fù)雜郵件時 { Multipart mp=(Multipart)content; Part part=mp.getBodyPart(0); v_content.addElement(getChineseStr(part.getContent().toString())); } } } } catch(Exception e) //出現(xiàn)異常的處理 { System.out.println("getContent Error:"+e); v_content.clear(); } return v_content; //返回Vector }/* 有附件時,沒有測試,讀者可參考public String getContent(String path){ String Vcontent=""; try { for(int i=0;i < message.length;i++) { if (!message[i].isSet(Flags.Flag.DELETED)) { Object content=message[i].getContent(); if (message[i].isMimeType("text/plain")) { Vcontent=Vcontent+content.toString()+","; } else if(message[i].isMimeType("multipart/*")) { Multipart mp=(Multipart)content; for (int j=0;j<mp.getCount();j++) { Part part=mp.getBodyPart(j); //get the content type of this part String contentType=part.getContentType(); if (contentType==null) { Vcontent="Bad content type"; continue;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -