/** * 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; }