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;
	}
相关文章
相关标签/搜索