最近OA集成郵箱系統,需要將郵箱的未讀郵件數和郵件總數讀取出來,下面記錄一下。
不多說了,直接上代碼了:
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Properties; import java.util.Timer; import java.util.TimerTask; import javax.mail.Flags.Flag; import javax.mail.Folder; import javax.mail.Message; import javax.mail.Session; import javax.mail.Store; import javax.mail.internet.MimeUtility; import com.sun.mail.imap.IMAPFolder; import com.sun.mail.imap.IMAPMessage; public class Main { public static void main(String[] args) { Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { // TODO Auto-generated method stub redMail(); } }, 1000,1000*60);//延遲1000毫秒開始第一次執行,60*1000毫秒執行一次 } public static void redMail() { System.out.println("Hello World!"); // 准備連接服務器的會話信息 Properties props = new Properties(); props.setProperty("mail.store.protocol", "imap"); props.setProperty("mail.imap.host", "imap.126.com"); props.setProperty("mail.imap.port", "143");//根據郵件服務器情況設定 //props.setProperty("mail.imap.starttls.enable", "true"); // 創建Session實例對象 Session session = Session.getInstance(props); try { // 創建IMAP協議的Store對象 Store store = session.getStore("imap"); // 連接郵件服務器 store.connect("imap.126.com","XXX@126.com", "XXX"); // 獲得收件箱 Folder folder = (IMAPFolder)store.getFolder("INBOX"); // 以讀寫模式打開收件箱 folder.open(Folder.READ_WRITE); // 獲得收件箱的郵件列表 Message[] messages = folder.getMessages(); // 打印不同狀態的郵件數量 System.out.println("收件箱中共" + messages.length + "封郵件!"); System.out.println("收件箱中共" + folder.getUnreadMessageCount() + "封未讀郵件!"); System.out.println("收件箱中共" + folder.getNewMessageCount() + "封新郵件!"); System.out.println("收件箱中共" + folder.getDeletedMessageCount() + "封已刪除郵件!"); folder.close(false); store.close(); }catch (Exception e){ System.out.println("testEx, catch exception"+e.getStackTrace()); //throw e; } } }
最后結果:
JAVAMail功能強大,可以讀取並解析郵件。詳細API:JAVAMail API