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);}}}
相关文章推荐
- javamail中使用发信身份验证
- 在JSP中使用JavaMail(上)
- Delphi中捕获音频函数OnWaveIn的使用小记
- 使用JavaMail收发邮件,解决了中文附件名问题
- sudo使用小记
- JSP中使用JavaMail
- javamail使用笔记
- TreeView使用小记
- VC6使用小记
- 在JSP中使用JavaMail(下)
- Display Tag使用小记
- WinGrid 使用小记
- 在JSP中使用JavaMail
- 在JSP中使用JavaMail(1)
- 在JSP中使用JavaMail
- 在JSP中使用JavaMail
- [VB.NET]DateTimePicker使用小记
- asp.net2.0 GridView使用小记
- junit初步使用小记
- 有关使用javamail发信的设置