/**
* */package com.util;import java.io.UnsupportedEncodingException;import java.util.Properties;import javax.mail.Authenticator;import javax.mail.Folder;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.NoSuchProviderException;import javax.mail.PasswordAuthentication;import javax.mail.Session;import javax.mail.Store;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeUtility;/** * @author wqf * */public class EmailSendTools { private final static String _EMAIL_ACCOUNT = "XXX@qq.com"; private final static String _EMAIL_PASSWORD = "XXX"; private final static String _SMTP_HOST = "smtp.qq.com"; private final static String _SMTP_PORT = "465"; private final static String _POP3_HOST = "pop.qq.com"; private final static String _POP3_PORT = "995"; /*** @param args
*/ public static void main(String[] args) { // sendEmail(_EMAIL_ACCOUNT, "test", "test"); receiveMail(); } public static void receiveMail() throws SendEmailException{ try { Store store = getSession(false).getStore(); store.connect(); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); Message[] msgs = folder.getMessages(1,20); int count = msgs.length; for (int i = 0; i < count; i++) { System.out.println("发送人:" + decodeText(msgs[i].getFrom()[0].toString())); System.out.println("主题:" + msgs[i].getSubject().toString()); } } catch (NoSuchProviderException e) { throw new SendEmailException("链接邮件失败" + e.getMessage(), e); } catch (MessagingException e) { throw new SendEmailException("读取收件箱失败:" + e.getMessage(), e); } catch (UnsupportedEncodingException e) { throw new SendEmailException("邮件解析失败:" + e.getMessage(), e); } } private static String decodeText(String text) throws UnsupportedEncodingException{ if (text == null) return null; if (text.startsWith("=?GB") || text.startsWith("=?gb") || text.startsWith("=?UTF") ||text.startsWith("=?utf")) text = MimeUtility.decodeText(text); else text = new String(text.getBytes("ISO8859_1")); return text; } /** * * @param from * @param to * @param title * @param emsg * @return boolean * @throws SendEmailException */ public static boolean sendEmail(String to, String title, String emsg) throws SendEmailException { try { Session session = getSession(true); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(_EMAIL_ACCOUNT)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setSubject(title); message.setText(emsg); message.saveChanges(); Transport.send(message); } catch (MessagingException e) { throw new SendEmailException("邮件发送失败:" + e.getMessage(), e); } return true; } private static Properties getProp(boolean send) { // Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); Properties prop = new Properties(); if (send) { prop.setProperty("mail.transport.protocol", "smtp"); prop.setProperty("mail.smtp.host", _SMTP_HOST); prop.setProperty("mail.smtp.auth", "true"); prop.setProperty("mail.smtp.port", _SMTP_PORT); prop.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); prop.setProperty("mail.smtp.socketFactory.fallback", "false"); prop.setProperty("mail.smtp.socketFactory.port", _SMTP_PORT); } else { prop.setProperty("mail.store.protocol", "pop3"); prop.setProperty("mail.pop3.host", _POP3_HOST); prop.setProperty("mail.pop3.port", _POP3_PORT); prop.setProperty("mail.pop3.auth", "true"); prop.setProperty("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); prop.setProperty("mail.pop3.socketFactory.fallback", "false"); prop.setProperty("mail.pop3.socketFactory.port", _POP3_PORT); } return prop; } private static Session getSession(boolean send) { Session session = Session.getDefaultInstance(getProp(send), getAut());// session.setDebug(true); return session; } private static Authenticator getAut() { Authenticator aut = new MyAuthenricator(_EMAIL_ACCOUNT, _EMAIL_PASSWORD); return aut; } private static class SendEmailException extends RuntimeException { /** * */ private static final long serialVersionUID = 1L; @SuppressWarnings("unused") public SendEmailException() { super(); } @SuppressWarnings("unused") public SendEmailException(String msg) { super(msg); } @SuppressWarnings("unused") public SendEmailException(Throwable cause) { super(cause); } public SendEmailException(String message, Throwable cause) { super(message, cause); } } /** * 客户端程序自己实现Authenticator子类用于用户认证 */ static class MyAuthenricator extends Authenticator { String user = null; String pass = ""; public MyAuthenricator(String user, String pass) { this.user = user; this.pass = pass; } @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user, pass); } }}