使用JAVAMAIL 发邮件.

发送不带附件的邮件,欢迎大家提意见并扩展成带附件的.

第一部分
:

 


public class EmailAuthenticator
    extends Authenticator {
    private String username;
    private String password;
    public void check(String usr, String pswd) {
        this.username = usr;
        this.password = pswd;
    }

    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password);
    }
}


第二部分:

/**
*
* <p>Title: 263营帐管理系统</p>
* <p>Description:<b>邮件发送公用类\uFFFD/b>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: ZTEsoft</p>
* @author luo.yanqing
* @version 1.0
*/

public class MailSend {
  private Log log = LogFactory.getLog(getClass());

  private static Properties props = null;

  /*       session object       */
  private static Session mailsession = null;

  /*        mail object         */
  private static MimeMessage mess = null;

  //实际会从配置文件读
  private String sender = ReferenceConst.mailSender;
  private String senderName = ReferenceConst.mailSenderName;
  private String host = ReferenceConst.mailHost;
  private String usr = ReferenceConst.mailUsr;
  private String pwd = ReferenceConst.mailPwd;

  /**
   * 使用默认的发送者和服务器发送邮件
   * @param info String
   * @param subject String
   * @param receiver String
   */
  public StringBuffer sendEmail(String info, String subject, String receiver) {
    //不需要验证
    //sendEmail(host, info, subject, sender, receiver);
    //需要验证
    StringBuffer error = new StringBuffer();
    error = sendEmail(host, usr, pwd, info, subject, sender, receiver);
    return error;
  }

  /**
   * @function 发送邮件的实现(邮件服务器不需要验证)
   * @param server 邮件服务器IP地址
   * @param info 邮件的内容
   * @param subject 邮件的主题
   * @param sender   邮件的发送者
   * @param receiver 邮件的接收者
   * @return null
   */

  public StringBuffer sendEmail(String server, String info, String subject,
                                String sender, String receiver) {
    if (log.isInfoEnabled()) {
      log.info("MailSend.sentEmail(不需验证) start");
    }
    StringBuffer error = new StringBuffer();
    props = new Properties();
    props.put("mail.smtp.host", server);

    mailsession = Session.getDefaultInstance(props, null);

    try {
      MimeMessage mailmess = new MimeMessage(mailsession);
      mailmess.setSubject(subject, "GB2312");
      mailmess.setContent(info, "text/plain;charset=GB2312");

      InternetAddress from = new InternetAddress(sender, senderName, "GB2312");
      mailmess.setFrom(from);

      InternetAddress tod = new InternetAddress(receiver);
      mailmess.setRecipient(Message.RecipientType.TO, tod);
      Transport transport = mailsession.getTransport("smtp");
      //System.out.println("begin connect");
      transport.connect(server, "", "");
      transport.send(mailmess);
      transport.close();
    }
    catch (MessagingException me) {
      if (log.isInfoEnabled()) {
        log.debug("MailSend.sentEmail(不需验证) threw Exception");
        log.debug(me.getMessage());

      }
      error.append("mailsent.error");
    }
    catch (Exception ex) {
      if (log.isInfoEnabled()) {
        log.debug("MailSend.sentEmail(不需验证) threw Exception");
        log.debug(ex.getMessage());
      }
      error.append("mailsent.error");
    }
    if (log.isInfoEnabled()) {
      log.info("MailSend.sentEmail(不需验证) end");
    }
    return error;
  }

  /**
   * @function 发送邮件的实现(邮件服务器需要验证)
   * @param server 邮件服务器IP地址
   * @param usr 邮件服务器用户
   * @param psd 邮件服务器密码
   * @param info 邮件的内容
   * @param subject 邮件的主题
   * @param sender   邮件的发送者
   * @param receiver 邮件的接收者
   * @return null
   */

  public StringBuffer sendEmail(String server, String usr, String psd,
                                String info,
                                String subject, String sender, String receiver) {
    if (log.isInfoEnabled()) {
      log.info("MailSend.sentEmail(需验证) start");
    }
    StringBuffer error = new StringBuffer();
    props = new Properties();
    props.put("mail.smtp.host", server);
    props.put("mail.smtp.auth", "true");
    EmailAuthenticator auth = new EmailAuthenticator();
    auth.check(usr, psd);
    mailsession = Session.getDefaultInstance(props, auth);
    try {
      MimeMessage mailmess = new MimeMessage(mailsession);
      mailmess.setSubject(subject, "GB2312");
      mailmess.setContent(info, "text/plain;charset=GB2312");

      InternetAddress from = new InternetAddress(sender, senderName, "GB2312");
      mailmess.setFrom(from);

      InternetAddress tod = new InternetAddress(receiver);
      mailmess.setRecipient(Message.RecipientType.TO, tod);
      Transport transport = mailsession.getTransport("smtp");
      //System.out.println("begin connect");
      transport.connect(server, "", "");
      transport.send(mailmess);
      transport.close();

    }
    catch (MessagingException me) {
      if (log.isInfoEnabled()) {
        log.debug("MailSend.sentEmail(需验证) threw Exception");
        log.debug(me.getMessage());
      }
      error.append("mailsent.error");
    }
    catch (Exception ex) {
      if (log.isInfoEnabled()) {
        log.debug("MailSend.sendEmail(需验证) threw Exception");
        log.debug(ex.getMessage());
      }
      error.append("mailsent.error");
    }
    if (log.isInfoEnabled()) {
      log.info("MailSend.sendEmail(需验证)end");
    }
    return error;
  }

  /**
   * @function 验证邮件地址的有效性的实现

   * @param strmail 邮件地址 如"[email protected]"
   * @return boolean
   * @roseuid 4157E1DD002E
   */

  public boolean mailvaliade(String strmail) {
    if (log.isInfoEnabled()) {
      log.info(" MailSend.mailvaliade start");
    }

    Pattern p = Pattern.compile("\\w+@(\\w+.)+[a-z]{2,3}");
    Matcher m = p.matcher(strmail);
    boolean b = m.matches();
    if (log.isInfoEnabled()) {
      log.info("MailSend.mailvaliade end");
    }

    return b;

  }

}

猜你喜欢

转载自xixiyanqi.iteye.com/blog/1505834