import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;public class SendMail{
  private String sender = "[email protected]";//发件人地址
  private String smtpHost = "smtp.163.com";//邮件发送服务器(smtp)比如163就是smtp.163.com
  private String user = "你的登陆用户名"; //登录用户名
  private String password = "你的邮箱密码";//登录密码  private String subject = "";//mail主题  public SendMail(){
    this.setPropertiesAttri();
  }  private void setPropertiesAttri(){
    try{
      this.setSmtpHost(smtpHost);
      this.setUser(user);
      this.setPassword(password);
      this.setSender(sender);
      this.setSubject(subject);
    }catch(Exception ex){
      System.err.println("ex1 in sendmail.java:"+ex.toString());
    }
  }
  /** 设置发件人地址 */
  public void setSender(String sender){
    this.sender = sender;
  }  public String getSender(){
    return sender;
  }  /** 设置邮件发送服务器(smtp) */
  public void setSmtpHost(String smtpHost) {this.smtpHost = smtpHost;}
  public String getSmtpHost() {return smtpHost;}  /** 设置登录用户名 */
  public void setUser(String user){
    this.user = user;
  }
  public String getUser(){
    return user;
  }  /** 设置登录密码 */
  public void setPassword(String password){
    this.password = password;
  }
  public String getPassword(){
    return password;
  }  /** 设置mail主题 */
  public void setSubject(String subject){
    this.subject = subject;
  }
  public String getSubject(){
    return subject;
  }  /**
   * 使用smtp发送邮件 主程序
   * @throws MessagingException mail发送失败
   */
  public void smtp(String receiver,String content) throws MessagingException{
    if(smtpHost == null) throw new MessagingException("smtpHost not found");
    if(user == null) throw new MessagingException("user not found");
    if(password == null) throw new MessagingException("password not found");    Properties properties = new Properties();
    properties.put("mail.smtp.host", smtpHost);//设置smtp主机
    properties.put("mail.smtp.auth", "true");//使用smtp身份验证    Session session = Session.getDefaultInstance(properties,new Authenticator(){public PasswordAuthentication getPasswordAuthentication(){return new PasswordAuthentication(user, password);}});    //获得邮件会话对象
    MimeMessage mimeMsg = new MimeMessage(session);//创建MIME邮件对象
    if(sender != null){//设置发件人地址
      mimeMsg.setFrom(new InternetAddress(sender));
    }
    if(receiver != null){//设置收件人地址
      mimeMsg.setRecipients(Message.RecipientType.TO, parse(receiver));
    }
    if(subject != null){//设置邮件主题
      mimeMsg.setSubject(subject, "GBK");
    }
    MimeBodyPart part = new MimeBodyPart();//mail内容部分
    part.setText(content == null ? "" : content, "GBK");    //设置邮件格式为html cqc
    part.setContent(content.toString(),"text/html;charset=GBK");
    Multipart multipart = new MimeMultipart();
    multipart.addBodyPart(part);//在 Multipart 中增加mail内容部分
    mimeMsg.setContent(multipart);//增加 Multipart 到信息体
    mimeMsg.setSentDate(new Date());//设置发送日期
    Transport.send(mimeMsg);//发送邮件
  }  /** 解析地址集合字符串 */
  private InternetAddress[] parse(String addressSet) throws AddressException{
    ArrayList list = new ArrayList();
    StringTokenizer tokens = new StringTokenizer(addressSet, ";");
    while (tokens.hasMoreTokens()){
      list.add(new InternetAddress(tokens.nextToken().trim()));
    }
    InternetAddress[] addressArray = new InternetAddress[list.size()];
    list.toArray(addressArray);
    return addressArray;
  }  //供外部调用的接口
  public boolean sendMails(String mail,String content){
    if(mail == null||content==null){
      return false;
    }
    try{
      this.smtp(mail,content);
    }catch(Exception ex){
      System.err.println("ex2 in sendmail.java:"+ex.toString());
    }
    return true;
  }  public static void main (String[] args){
    SendMail mail = new SendMail();
    String email = "[email protected]";//接收人的邮件地址
    String content = "你的帐号一周后就要过期 请注意修改";
    try{
      mail.sendMails(email,content);
    }catch (Exception ex){
      System.err.println("ex3:"+ex.toString());
    }
  }
}