package tbx;import javax.mail.*;
import javax.mail.internet.*;
import java.io.*;
import java.util.*;
import  javax.activation.*;public class MailBean
{
  protected String to       = "";    //收件人
  protected String from     = "";    //发件人
  protected String cc       = "";    //抄送地址
  protected String bcc      = "";    //是否暗送,若暗送,地址等于to
  protected String subject  = "";    //标题
  protected String text     = "";    //邮件内容
  protected String user     = "";    //用户名
  protected String password = "";    //密码  static Vector file    = new Vector();       //用于保存发送附件的文件名的集合  public MailBean()
  {
  }  /**
   * 做一个可以传发件人等参数的构造
   * @param to,收件人
   * @param from,发件人
   * @param subject,标题
   * @param text,邮件内容
   * @param user,用户名
   * @param password,密码
   * @param b,判断是否需要暗送,需要则用To的地址
   */
  public MailBean(String to,String from,String subject,String text,String user,String password,boolean b)
  {
    //初始化发件人、收件人、主题等
    this.to       = to;
    this.from     = from;
    this.subject  = subject;
    this.text     = text;
    this.user     = user;
    this.password = password;    if (b == true)
    {
      this.bcc = to;
    }
    else
    {
      this.bcc ="";
    }
  }
  public void setTo(String to)
  {
    if (to != null)
    {
      this.to = to;
    }
    else
    {
      this.to = "";
    }
  }  public void setFrom(String from)
  {
    if (from != null)
    {
      this.from = from;
    }
    else
    {
      this.from = "";
    }
  }  public void setCc(String cc)
  {
    if (cc != null)
    {
      this.cc = cc;
    }
    else
    {
      this.cc = "";
    }
  }  public void setBcc(String bcc)
  {
    if (bcc != null)
    {
      this.bcc = bcc;
    }
    else
    {
      this.bcc = "";
    }
  }  public void setSubject(String subject)
  {
    if (subject != null)
    {
      this.subject = subject;
    }
    else
    {
      this.subject = "";
    }
  }  public void setText(String text)
  {
    this.text = text;
  }  public void setUser(String user)
  {
    if (user != null)
    {
      this.user = user;
    }
    else
    {
      this.user = "";
    }
  }  public void setPassword(String password)
  {
    if (password != null)
    {
      this.password = password;
    }
    else
    {
      this.password = "";
    }
  }  /**
   * 发送邮件,可设置抄送地址,暗送地址
   * @return i,返回<int>1</int>表示发送成功,返回<int>0</int>则发送失败
   */
  public int sendMail()
  {
    String status = null;  //用于显示错误状态
    int i = 0;    Properties properties = System.getProperties();
    properties.setProperty("mail.transport.protocol","smtp");
    properties.put("mail.smtp.host","smtp.163.com");           //创建信件服务器
    properties.put("mail.smtp.auth","true");                     //身份认证    //得到对话对象
    Session session = Session.getDefaultInstance(properties, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
    return new PasswordAuthentication(user,password);
}
    });
    try
    {
      //创建一个消息,并初始化该消息的各项元素
      MimeMessage message = new MimeMessage(session);
      message.setFrom(new InternetAddress(from));      InternetAddress[] toadd = InternetAddress.parse(to);
      InternetAddress[] ccadd = InternetAddress.parse(cc);
      InternetAddress[] bcadd = InternetAddress.parse(bcc);
      message.setRecipients(Message.RecipientType.TO,toadd);
      message.setRecipients(Message.RecipientType.CC,ccadd);
      message.setRecipients(Message.RecipientType.BCC,bcadd);
      message.setSubject(subject);      Multipart mp = new MimeMultipart();
      Enumeration ef = file.elements();
      MimeBodyPart mbp = new MimeBodyPart();
      mbp.setText(text);
      mp.addBodyPart(mbp);      //检查序列中是否还有更多的对象
      while (ef.hasMoreElements())
      {
MimeBodyPart mbp1 = new MimeBodyPart();
//选择出每一个附件名
String filename = ef.nextElement().toString();
//得到数据源
FileDataSource fds = new FileDataSource(filename);
//得到附件本身并至入BodyPart
mbp1.setDataHandler(new DataHandler(fds));
//得到文件名同样至入BodyPart
mbp1.setFileName(fds.getName());
mp.addBodyPart(mbp1);
      }
      //移走集合中的所有元素
      file.removeAllElements();
      //Multipart加入到信件
      message.setContent(mp);
      //设置信件头的发送日期
      message.setSentDate(new Date());      //发送信件
      Transport transport = session.getTransport("smtp");
      transport.send(message,message.getAllRecipients());
      transport.close();      i = 1;
      status = "send sucesseful.";
    }
    catch (AddressException e)
    {
      status = "There was an error parsing the addresses.";
      System.err.println(e.getMessage());
    }
    catch (SendFailedException e)
    {
      status = "There was an error sending the message.";
      System.err.println(e.getMessage());
    }
    catch (MessagingException e)
    {
      status = "There was an unexpected eorror.";
      System.err.println(e.getMessage());
    }
    catch (Exception e)
    {
      status = "Error";
      System.err.println(e.getMessage());
    }
    finally
    {
      System.out.println("status: " + status);
      return i;
    }
  }  /**
   * 该方法用于添加附件名
   * @param fname,附件路径+名称
   */
  public  void  attachfile(String  fname)
  {
    file.addElement(fname);
  }  /**
   * 该方法用于删除某一附件
   * @param fname,附件名
   */
  public void delAttach(String fname)
  {
    file.remove(fname);
  }  public static void main(String[] args)
  {
    MailBean mb = new MailBean();
    mb.setBcc("[email protected]");
    mb.setFrom("163");
    mb.setSubject("test");
    mb.setText("1232143243215");
    mb.setUser("peppi");
    mb.setPassword("112233");
//    MailBean mb = new MailBean("[email protected]","163","test","1232143243215","*****","******",true);    int s = mb.sendMail();
  }}