java发送mail

package common.mail;

import java.util.*;
import javax.activation.*;
import javax.mail.*;
import javax.mail.internet.*;
import common.mail.Mail.MailInfor.Accessory;

/**
 * classname Mail
 * action 用于发送mail,借住163的smtp服务器
 * @version 2007/7/26
 * */
public class Mail {

  /**
   * 内部类MailInor包函了发送邮件需要的基本信息
   * 以属性方式需要对其进行配置
   * */
  class MailInfor {
    /**
     * constructor 无参
     * action 对属性进行初始化
     * */
    MailInfor() {
      setAccessory(false);
    }

    private String host = "smtp.163.com";
    private String fromMail = "zhangliyang_good@163.com";
    private List toMail;
    private String userName = "zhangliyang_good";
    private String password = "xtgmybjjmh";
    private String subject;
    private String content;
    private boolean isDebug = false;
    private boolean accessory;
    private List accessorys;

    public void setAccessorys(List accessList) {
      this.accessorys = accessList;
    }

    public List getAccessorys() {
      return this.accessorys;
    }

    public void setHost(String host) {
      this.host = host;
    }

    public void setFromMail(String fromMail) {
      this.fromMail = fromMail;
    }

    public void setToMail(List toMail) {
      this.toMail = toMail;
    }

    public void setUserName(String userName) {
      this.userName = userName;
    }

    public void setPassword(String password) {
      this.password = password;
    }

    public void setSubject(String subject) {
      this.subject = subject;
    }

    public void setContent(String content) {
      this.content = content;
    }

    public String getHost() {
      return host;
    }

    public String getFromMail() {
      return fromMail;
    }

    public List getToMail() {
      return toMail;
    }

    public String getUserName() {
      return userName;
    }

    public String getPassword() {
      return password;
    }

    public String getSubject() {
      return subject;
    }

    public String getContent() {
      return content;
    }

    public void setIsDebug(boolean isDebug) {
      this.isDebug = isDebug;
    }

    public boolean isIsDebug() {
      return isDebug;
    }

    public void setAccessory(boolean accessory) {
      this.accessory = accessory;
    }

    public boolean isAccessory() {
      return accessory;
    }

    /**
     * 内部类Accessory用于发送附件,包函了发送附件需要的信息
     * 以属性方式需要对其进行配置
     * */
    class Accessory {
      private String fileUrl;
      private String fileName;
      public void setFileUrl(String fileUrl) {
        this.fileUrl = fileUrl;
      }

      public String getFileUrl() {
        return this.fileUrl;
      }

      public void setFileName(String fileName) {
        this.fileName = fileName;
      }

      public String getFileName() {
        return this.fileName;
      }

    }
  }

  public boolean sendMail(MailInfor infor) {
    Properties props = new Properties();
    props.put("mail.smtp.host", infor.getHost());
    props.put("mail.smtp.auth", "true");
    Session session = Session.getDefaultInstance(props);

    //是否在控制台输出日志信息
    session.setDebug(infor.isIsDebug());

    MimeMessage message = new MimeMessage(session);
    try {
      message.setFrom(new InternetAddress(infor.getFromMail()));
      List list = infor.getToMail();
      if (list != null) {
        Iterator iter = list.iterator();
        while (iter.hasNext()) {
          message.addRecipient(Message.RecipientType.TO,
                               new InternetAddress( (String) iter.next()));
        }
      }
      else {
        throw new NullPointerException("tomail is not null");
      }

      message.setSubject(infor.getSubject());
      MimeMultipart mm = new MimeMultipart();

      //普通文本
      BodyPart htmlPart = new MimeBodyPart();
      htmlPart.setContent(infor.getContent(), "text/html;charset=gb2312");

      //附件
      if (infor.isAccessory()) {
        List accessorys = infor.getAccessorys();
        Iterator iter = accessorys.iterator();
        BodyPart streamContent = null;
        DataSource dataSource = null;
        Accessory accessory = null;
        while (iter.hasNext()) {
          streamContent = new MimeBodyPart();
          accessory = (Accessory) iter.next();
          dataSource = new FileDataSource(accessory.getFileUrl());
          streamContent.setDataHandler(new DataHandler(dataSource));
          streamContent.setFileName(accessory.getFileName());
          mm.addBodyPart(streamContent);
        }
      }
      //填加相应的属性
      mm.addBodyPart(htmlPart);

      message.setContent(mm);
      message.saveChanges();
      Transport transport = session.getTransport("smtp");
      transport.connect(infor.getHost(), infor.getUserName(),
                        infor.getPassword());
      transport.sendMessage(message, message.getAllRecipients());
      transport.close();
    }
    catch (Exception e) {
      e.printStackTrace();
      return false;
    }
    return true;
  }

  //示例
  public static void main(String[] args) {
    Mail mail = new Mail();
    MailInfor infor = mail.new MailInfor();
    List list = new ArrayList();
    list.add("aaaaa@163.com");
    infor.setToMail(list);
    infor.setSubject("你好");
    infor.setContent("......................");
    infor.setFromMail("aaaaa@163.com");
    infor.setUserName("aaaaa");
    infor.setPassword("123456");
    infor.setAccessory(true);

    //填加附件
    list = new ArrayList();

    for (int i = 0; i < 2; i++) {
      Accessory accessory = infor.new Accessory();
      accessory.setFileName("bb.jpg");
      accessory.setFileUrl(
          "c:/{D940ED42-3EDC-430B-ACE2-2764187EBFED}0.jpg");
      list.add(accessory);
    }
    infor.setAccessorys(list);

    if (mail.sendMail(infor)) {
      System.out.println("成功");
    }
  }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值