首页 | 源码下载 | 网站模板 | 网页特效 | 广告代码 | 网页素材 | 字体下载 | 书库 | 站长工具
会员投稿 投稿指南 RSS订阅
当前位置:主页>网络编程>java教程>资讯:Java Mail与Spring Mail使用方法实例

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);
  }
  }
  }

上一篇:Java23种设计模式中常用的九种模式介绍 下一篇:Java里面的java.net.url类介绍

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图