javamail實現郵件接收功能IMap和pop3方式

/**
*  IMAP方式
*
*/

import java.util.Properties;

import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.URLName;

public class ReceiveMails {
	
		 public static void main(String[] args) throws Exception { 
		        // 準備鏈接服務器的會話信息 
		        Properties props = new Properties(); 
		        props.setProperty("mail.store.protocol", "imap"); 
		        props.setProperty("mail.imap.host", "imap.qq.com"); 
		        props.setProperty("mail.imap.port", "143");
		        
		        /**  QQ郵箱須要創建ssl鏈接 */
		        props.setProperty("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
		        props.setProperty("mail.imap.socketFactory.fallback", "false");
		        props.setProperty("mail.imap.starttls.enable","true");
		        props.setProperty("mail.imap.socketFactory.port", "993");

		        // 建立Session實例對象 
		        Session session = Session.getInstance(props);
		        URLName urln = new URLName("imap", "imap.qq.com", 143, null,"601340241@qq.com","enwjrumuitsdbeii");
		        // 建立IMAP協議的Store對象 
		        Store store = session.getStore(urln);
		        store.connect();

		        // 得到收件箱 
		        Folder folder = 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() + "封已刪除郵件!"); 

		        System.out.println("------------------------開始解析郵件----------------------------------"); 

		        // 解析郵件 
		       /** for (Message message : messages) { 
		            IMAPMessage msg = (IMAPMessage) message; 
		            String subject = MimeUtility.decodeText(msg.getSubject()); 
		            System.out.println("[" + subject + "]未讀,是否須要閱讀此郵件(yes/no)?"); 
		            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
		            String answer = reader.readLine();  
		            if ("yes".equalsIgnoreCase(answer)) { 
		                // 第二個參數若是設置爲true,則將修改反饋給服務器。false則不反饋給服務器 
		                msg.setFlag(Flag.SEEN, true);   //設置已讀標誌 
		            } 
		        } */

		        // 關閉資源 
		        folder.close(false); 
		        store.close(); 
		    } 

}

POP3方式:與上面方法相似只需更改鏈接方式便可java

/**
	 * qq郵箱須要創建ssl鏈接才能接收郵件 pop3方式
	 * */
	public static Store getQQSSLStore(Mail mail) throws Exception {
        // 建立一個有具體鏈接信息的Properties對象  
        Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
        final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
        Properties props = System.getProperties();
        props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
        props.setProperty("mail.pop3.socketFactory.fallback", "false");
        props.setProperty("mail.pop3.port", "465");
        props.setProperty("mail.pop3.socketFactory.port", "995");
        Session session = Session.getInstance(props);
        URLName urln = new URLName("pop3", mail.getPop3Server(), mail.getPop3Port(), null,mail.getMailAddr(),mail.getMailPassWord());
        Store store = session.getStore(urln);
        return store;
	}
	
	
	/**
	 * 返回非ssl鏈接
	 * */
	public static Store getStore(Mail mail) throws Exception {
		Properties props = System.getProperties();
		props.put("mail.smtp.host", mail.getSmtpServer());
		props.put("mail.smtp.auth", "true");
		Session session = Session.getInstance(props, null);
		URLName urln = new URLName("pop3", mail.getPop3Server(), 110, null,
				mail.getMailAddr(), mail.getMailPassWord());
		Store store = session.getStore(urln);
		return store;
	}
相關文章
相關標籤/搜索