今天纠结了一天的时间,使用pop3协议收取qq邮箱中邮件时,因为一个特别坑爹的问题重新写n次,最后发现是因为qq邮箱设置了独立邮箱密码,必须的用独立邮箱密码登陆才行,/(ㄒoㄒ)/~~!!!!
但今天干的活也不能白干,所以发出来记录一下代码。
package com.lkb.thirdUtil.emailbank.test; import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class MailExample { public static void main (String args[]) throws Exception { // Get system properties Properties props = System.getProperties(); // Setup mail server props.put("mail.pop3.host", "pop.qq.com"); props.put("mail.pop3.port", "995"); // Get session props.put("mail.smtp.auth", "true"); //这样才能通过验证 props.put("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.pop3.socketFactory.fallback", "false"); props.setProperty("mail.pop3.socketFactory.port", "995"); MyAuthenticator myauth = new MyAuthenticator("*****@qq.com", "******"); Session session = Session.getDefaultInstance(props, myauth); Store store = session.getStore("pop3"); store.connect(); //session.setDebug(true); System.out.println("成功!"); Folder folder = store.getFolder("INBOX"); // 只读 folder.open(Folder.READ_ONLY); Message[] mess=folder.getMessages(); for (Message message : mess) { System.out.println(message.getSubject()); } } }
--------------------------------------------------------
package com.lkb.thirdUtil.emailbank.test; import javax.mail.PasswordAuthentication; class MyAuthenticator extends javax.mail.Authenticator { private String strUser; private String strPwd; public MyAuthenticator(String user, String password) { this.strUser = user; this.strPwd = password; } protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(strUser, strPwd); } }
IMAP形式:
package com.lkb.thirdUtil.emailbank.test; import java.io.UnsupportedEncodingException; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Folder; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Store; public class ImapProtocolImpl extends Authenticator { private Session session; private PasswordAuthentication authentication; public ImapProtocolImpl(String username, String password) { Properties props = new Properties(); props.setProperty("mail.store.protocol", "imap"); props.setProperty("mail.imap.host", "imap.qq.com"); props.setProperty("mail.imap.port", "993"); props.put("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.imap.socketFactory.fallback", "false"); props.setProperty("mail.imap.auth.login.disable", "true"); props.setProperty("mail.imap.auth.plain.disable","true"); authentication = new PasswordAuthentication(username, password); session = Session.getInstance(props, this); session.setDebug(true); } @Override public PasswordAuthentication getPasswordAuthentication() { return this.authentication; } public void connect() { try { Store store = session.getStore(); store.connect(); Folder root = store.getDefaultFolder(); Folder inbox = root.getFolder("inbox"); inbox.open(Folder.READ_WRITE); System.out.println(inbox.getMessageCount()); } catch (MessagingException e) { try { byte[] buf = e.getMessage().getBytes("ISO-8859-1"); System.out.println(new String(buf, "GBK")); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } throw new RuntimeException("登录失败", e); } } }
原文:http://www.cnblogs.com/gisblogs/p/4363638.html