package com.ipv.mail;
/**
 * 发送带附件的邮件
 */
import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;public class jsendMail {
//定义收件人、发送人、主题等
  String to = "", from = "", host = "", filename = "", messagetext = "",
      subject = "";
  boolean debug = false;
//保存发送的文件名
  Vector vfile = new Vector(10, 10);
//保存发送的正文
  Vector vmsg = new Vector(10, 10);
  public jsendMail() {}  public jsendMail(String to, String from, String smtpServer, String subject) {
//初始化收件人、发送人、主题
    this.to = to;
    this.from = from;
    this.host = smtpServer;
    this.subject = subject;
  }//收集附加文件
  public void attachfile(String fname) {
    vfile.addElement(fname);
  }//收集邮件正文
  public void setMessage(String msg) {
    vmsg.addElement(msg);
  }//设置调试标志
  public void setDebug(boolean debug) {
    this.debug = debug;
  }//邮件发送函数
  public boolean startSend() {
    Properties props = System.getProperties();
    props.put("mail.smtp.host", host);
    Session session = Session.getDefaultInstance
        (props, null);
    session.setDebug(debug);
    try {
//创建一个消息,并初始化该消息的各项元素
      MimeMessage msg = new MimeMessage(session);
      msg.setFrom(new InternetAddress(from));
      InternetAddress[] address = {
          new InternetAddress(to)};
      msg.setRecipients(Message.RecipientType.TO, address);
      msg.setSubject(subject);
//把message part加入新创建的Multipart
      Multipart mp = new MimeMultipart();
// 邮件内容的第一部分
      Enumeration emsg = vmsg.elements();
      while (emsg.hasMoreElements()) {
        messagetext = emsg.nextElement().toString();
        MimeBodyPart mbp1 = new MimeBodyPart();
        mbp1.setText(messagetext);
        mp.addBodyPart(mbp1);
      }
      vmsg.removeAllElements();
// 邮件内容的第二部分
      Enumeration efile = vfile.elements();
      while (efile.hasMoreElements()) {
        MimeBodyPart mbp2 = new MimeBodyPart();
        filename = efile.nextElement().toString();
        FileDataSource fds = new FileDataSource(filename);
        mbp2.setDataHandler(new DataHandler(fds));
        mbp2.setFileName(fds.getName());
        mp.addBodyPart(mbp2);
      }
      vfile.removeAllElements();
// 把MultiPart加入邮件
      msg.setContent(mp);
// 设置邮件头的发送日期
      msg.setSentDate(new Date());
// 发送邮件
      Transport.send(msg);
    }
    catch (MessagingException mex) {
      mex.printStackTrace();
      Exception ex = null;
      if ( (ex = mex.getNextException()) != null) {
        ex.printStackTrace();
      }
      return false;
    }
    return true;
  } //end public void startSend()  public static void main(String[] args) {
    jsendMail sendmail = new jsendMail("[email protected]",
                                       "[email protected]",
                                       "www.cesgroup.com.cn",
                                       "标题:垃圾邮件");
    sendmail.attachfile("c:/a.txt");
    sendmail.attachfile("c:/b.txt");
    sendmail.setMessage("内容:垃圾邮件");
//    sendmail.setMessage("send a javafile");
    sendmail.startSend();
  }
}