您的位置:首页 > 编程语言 > Java开发

javamail使用小记

2017-05-27 01:31 330 查看
/****/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);elsetext = 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;}@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(user, pass);}}}
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java mail