Java Mail 发送邮件

package com.eastpro.batch.biz;

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.security.spec.X509EncodedKeySpec;
public class SendMail {
  private MimeMessage mimeMsg; //MIME mail object

  private Session session;
  private Properties props; //system property
  private boolean needAuth = false;

  private String username = "";
  private String password = "";

  private Multipart mp; //Multipart ,存放信件 title/内容/附件等

  public SendMail(String smtp) {
    setSmtpHost(smtp);
    createMimeMessage();
  }

  /**
   * @param hostName String
   */
  public void setSmtpHost(String hostName) {
    System.out.println("sytem属性:mail.smtp.host = " + hostName);
    if (props == null) {
      props = System.getProperties();
    }
    props.put("mail.smtp.host", hostName); //SMTP主机
  }

  /**
   * @return boolean
   */
  public boolean createMimeMessage() {
    try {
      System.out.println("session begin-------");
      session = Session.getInstance(props, null);
    }
    catch (Exception e) {
      System.err.println("Session.getInstance faild!" + e);
      return false;
    }

    System.out.println("MimeMessage begin-------!");
    try {
      mimeMsg = new MimeMessage(session);
      mp = new MimeMultipart();

      return true;
    }
    catch (Exception e) {
      System.err.println("MimeMessage fiald!" + e);
      return false;
    }
  }

  /**
   * @param need boolean
   */
  public void setNeedAuth(boolean need) {
    System.out.println(":mail.smtp.auth = " + need);
    if (props == null) {
      props = System.getProperties();

    }
    if (need) {
      props.put("mail.smtp.auth", "true");
    }
    else {
      props.put("mail.smtp.auth", "false");
    }
  }

  /**
   * @param name String
   * @param pass String
   */
  public void setNamePass(String name, String pass) {
    username = name;
    password = pass;
  }

  /**
   * @param mailSubject String
   * @return boolean
   */
  public boolean setSubject(String mailSubject) {
    System.out.println("set title begin-----!");
    try {
      if (!mailSubject.equals("") && mailSubject != null) {
        mimeMsg.setSubject(mailSubject);
      }
      return true;
    }
    catch (Exception e) {
      System.err.println("set title faild!");
      return false;
    }
  }

  /**
   * @param name String
   * @param pass String
   */
  public boolean addFileAffix(String filename) {

    System.out.println("增加附件----:" + filename);
    if (filename.equals("") || filename == null) {
      return false;
    }
    String file[];
    file = filename.split(";");
    System.err.println("========" + file.length);
    try {
      for (int i = 0; i < file.length; i++) {
        BodyPart bp = new MimeBodyPart();
        FileDataSource fileds = new FileDataSource(file[i]);
        bp.setDataHandler(new DataHandler(fileds));
        bp.setFileName(fileds.getName());
        mp.addBodyPart(bp);
      }
      return true;
    }
    catch (Exception e) {
      System.err.println("增加附件:" + filename + "--faild!" + e);
      return false;
    }

  }

  /**
   * @param name String
   * @param pass String
   */
  public boolean setFrom(String from) {
    System.out.println("set Mail From!");
    try {
      mimeMsg.setFrom(new InternetAddress(from));
      return true;
    }
    catch (Exception e) {
      return false;
    }
  }

  /**
   * @param name String
   * @param pass String
   */
  public boolean setTo(String to) {
    if (to == null) {
      return false;
    }

    try {
      mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
      return true;
    }
    catch (Exception e) {
      return false;
    }

  }

  /**
   * @param name String
   * @param pass String
   */
  public boolean setCopyTo(String copyto) {
    if (copyto.equals("") || copyto == null) {
      return false;
    }
    try {
      String copy[];
      int i = 0;
      copy = copyto.split(";");
      for(i=0; i<copy.length; i++){
        mimeMsg.setRecipients(Message.RecipientType.CC,
                              (Address[]) InternetAddress.parse(copy[i]));
      }
      return true;
    }
    catch (Exception e) {
      return false;
    }
  }

  /**
   * @param mailBody String
   */
  public boolean setBody(String mailBody) {
    try {
      BodyPart bp = new MimeBodyPart();
      bp.setContent(
          "<meta http-equiv=Content-Type content=text/html; charset=gb2312>" +
          mailBody, "text/html;charset=GB2312");
      mp.addBodyPart(bp);

      return true;
    }
    catch (Exception e) {
      System.err.println("Set content Fiald!" + e);
      return false;
    }
  }

  /**
   *送html
   * @param htmlPath
   * @return
   */
  public boolean setHtml(String htmlPath) {
    try {
      if (!htmlPath.equals("") && htmlPath != null) {
        BodyPart mbp = new MimeBodyPart();
        DataSource ds = new FileDataSource(htmlPath);
        mbp.setDataHandler(new DataHandler(ds));
        mbp.setHeader("Content-ID", "meme");
        mp.addBodyPart(mbp);
      }
      return true;
    }
    catch (Exception e) {
      System.err.println("set html Fiald!" + e);
      return false;
    }
  }

  /**
   * @param name String
   * @param pass String
   */
  public boolean sendout() {
    try {
      mimeMsg.setContent(mp);
      mimeMsg.saveChanges();
      System.out.println("正在 Send Mail ....");

      Session mailSession = Session.getInstance(props, null);
      Transport transport = mailSession.getTransport("smtp");
      transport.connect( (String) props.get("mail.smtp.host"), username,
                        password);
      transport.sendMessage(mimeMsg,
                            mimeMsg.getRecipients(Message.RecipientType.TO));
      transport.sendMessage(mimeMsg,
                            mimeMsg.getRecipients(Message.RecipientType.CC));
      System.out.println("Mail Send 成功!");
      transport.close();

      return true;
    }
    catch (Exception e) {
      System.err.println("Mail Send Fiald!" + e);
      return false;
    }
  }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值