栏目导航
热点推荐
- 三十条有用的 Java 编程规则
- Java制作水印图片源码
- Java常见异常及可能的导致原因
- Java中的修饰词使用方法总结
- J2EE系统异常的处理准则
- Java中的异常、断言、日志解析(
- Java面试技巧:Java面试题集锦(
- 面向Java开发人员的Scala指南:
- Java程序员:一刻钟精通正则表达
- 网友经验分享:学好java开发的关
- 专家解答:创建表格与数据库进行
- Java远程访问Domino数据库
阅览排行
Java Mail与Spring Mail使用方法实例
www.jz123.cn 2009-12-10 来源: IT专家网 责任编辑(袁袁) 我要投递新闻
项目用到发送邮件的功能,自己写了个发送类,以gmail为例。
MailSender.java(邮件发送类)
view plaincopy to clipboardprint? package com.alu.epma.mail; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; public class MailSender { protected static final Logger logger = Logger.getLogger(MailSender.class); private static final String MAIL_CONFIG_PROPERTY = "mail_config.properties"; private static final String MAIL_SEND_PROPERTY = "mail_send.properties"; private static final String MAIL_HOSTNAME = "mail.hostname"; private static final String MAIL_USERNAME = "mail.username"; private static final String MAIL_PASSWORD = "mail.password"; /** * properties of mail smtp */ private static Properties configProps = new Properties(); /** * others information */ private static Properties sendProps = new Properties(); private static String userName; private static String password; private static String mailHost; /** * initialize smtp properties and main account properties */ static { try { // load smtp from mail_config.properties configProps.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(MAIL_CONFIG_PROPERTY)); // load from mail_send.properties sendProps.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(MAIL_SEND_PROPERTY)); userName = sendProps.getProperty(MAIL_USERNAME); password = sendProps.getProperty(MAIL_PASSWORD); mailHost = sendProps.getProperty(MAIL_HOSTNAME); } catch (IOException e) { e.printStackTrace(); logger.error("An error occured when load data from mail_config.properties and mail_send.properties!"); logger.error("Fail initialize!"); logger.error(e.toString()); } System.out.println("userName:" + userName); System.out.println("password:" + password); System.out.println("mailHost:" + mailHost); if (StringUtils.isEmpty(userName)) { logger.error("Username should be defined!"); } if (StringUtils.isEmpty(password)) { logger.error("Password should be defined!"); } if (StringUtils.isEmpty(mailHost)) { logger.error("Mailhost should be defined!"); } } /** * send asynchronism mail * @param mail */ public static void send(final MailProperty mail) { new Thread() { public void run() { send0(mail); } }.start(); } /** * send mail * @param mail * @return success or not */ private static boolean send0(MailProperty mail) { // get session with account name and password Session session = Session.getDefaultInstance(configProps, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(userName, password); } }); // construct message from session MimeMessage message = new MimeMessage(session); try { //sender if (StringUtils.isNotEmpty(mail.getFrom())) { message.setFrom(new InternetAddress(mail.getFrom())); } else { message.setFrom(new InternetAddress(userName + "@" + mailHost)); } //receivers if (!mail.getTo().isEmpty()) { message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(StringUtils.join(mail.getTo(),","), false)); } //cc receivers if (!mail.getCc().isEmpty()) { message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(StringUtils.join(mail.getCc(),","), false)); } // if (StringUtils.isNotEmpty(mail.getSubject())) { message.setSubject(mail.getSubject()); } if (StringUtils.isNotEmpty(mail.getContent())) { message.setText(mail.getContent()); } message.setSentDate(new Date()); Transport.send(message); } catch (AddressException e) { e.printStackTrace(); logger.error(e.toString()); return false; } catch (MessagingException e) { e.printStackTrace(); logger.error(e.toString()); return false; } return true; } /** * A mail model included from,to,cc,subject and content * @author yuanzhxu * */ public static class MailProperty { private String from; private List to; private List cc; // private String mailhost; private String subject; private String content; /** * Constructor */ public MailProperty() { to = new ArrayList(); cc = new ArrayList(); } public List getCc() { return cc; } public void addCc(String addr) { this.cc.add(addr); } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public List getTo() { return to; } public void addTo(String addr) { this.to.add(addr); } } } |
0
上一篇:Java23种设计模式中常用的九种模式介绍 下一篇:Java里面的java.net.url类介绍