/**
 *
 */
package com.javamail.net;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.Properties;
import com.javamail.net.StringHelper;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

/**
 *
 *
 */
public class mailtest {
   
 final public static int TO = 0;
 final public static int CC = 1;
 final public static int BCC = 2;
/**
 *
 * @param args
 * @throws MessagingException
 *
 */
 public static void main(String args[]) throws MessagingException {
  mailtest mail = new mailtest();
  Address[] ar = new Address[2];
  for (int i = 0; i < args.length; i++) {
   ar[i] = new InternetAddress(args[i]);
  }
  String address = InternetAddress.toString(ar);
  MyAuthenticator myauth = new MyAuthenticator(" [email]willmore2007@sina.com[/email]",
    "dreamcast");
 
  mail.setAddress(address, mailtest.TO);
  mail.setFromAddress(" [email]willmore2007@sina.com[/email]");
  mail.setSMTPHost("smtp.sina.com", "willmore2007", "dreamcast");
  mail.setSubject("11111");
  mail.setHtmlBody("hahahahahaha");
  mail.sendBatch(myauth);
 }
 private String mailSMTPHost = null;
 private String mailUser = null;
 private String mailPassword = null;
 private String mailFromAddress = null;
 private String mailSubject = "";
 private Address[] mailTOAddress = null;
 private Address[] mailCCAddress = null;
 private Address[] mailBCCAddress = null;
 private MimeMultipart mailBody = null;
 
 public mailtest() {
  mailBody = new MimeMultipart();
 }
 
 public void sendBatch(MyAuthenticator myauth) throws MessagingException {
  Properties properties = new Properties();
  
  Session session = null;
  // Setup mail server
  properties.put("mail.smtp.host", mailSMTPHost);
  // Get session
  properties.put("mail.smtp.auth", "true");
       
  
  if(myauth ==null)
  session = Session.getDefaultInstance(properties,null);
  else
  session = Session.getInstance(properties, myauth);
  session.setDebug(true);
  MimeMessage mimemessage = new MimeMessage(session);
  mimemessage.setFrom(new InternetAddress(this.mailFromAddress));
  if (mailTOAddress != null) {
   mimemessage.addRecipients(javax.mail.Message.RecipientType.TO,
     this.mailTOAddress);
  }
  if (mailCCAddress != null) {
   mimemessage.addRecipients(javax.mail.Message.RecipientType.CC,
     this.mailCCAddress);
  }
  if (mailBCCAddress != null) {
   mimemessage.addRecipients(javax.mail.Message.RecipientType.BCC,
     this.mailBCCAddress);
  }
  mimemessage.setSubject(this.mailSubject);
  mimemessage.setContent(this.mailBody);
  mimemessage.setSentDate(new Date());
  Transport transport = session.getTransport("smtp");
  transport.connect(this.mailSMTPHost, this.mailUser, this.mailPassword);
  Transport.send(mimemessage);
  System.out.println("has been sent the mail to:");
  if (mailTOAddress != null) {
   for (int i = 0; i < mailTOAddress.length; i++) {
    System.out.println(mailTOAddress[i]);
   }
  }
  if (mailCCAddress != null) {
   for (int i = 0; i < mailTOAddress.length; i++) {
    System.out.println(mailCCAddress[i]);
   }
  }
  if (mailBCCAddress != null) {
   for (int i = 0; i < mailTOAddress.length; i++) {
    System.out.println(mailBCCAddress[i]);
   }
  }
 }
 public void setAddress(String strAddress, int iAddressType)
   throws AddressException {
  switch (iAddressType) {
  case mailtest.TO: {
   ArrayList alAddress = StringHelper.spilt(strAddress, ",");
   mailTOAddress = new Address[alAddress.size()];
   for (int i = 0; i < alAddress.size(); i++) {
    mailTOAddress[i] = new InternetAddress((String) alAddress
      .get(i));
   }
   break;
  }
  case mailtest.CC: {
   ArrayList alAddress = StringHelper.spilt(strAddress, ",");
   mailCCAddress = new Address[alAddress.size()];
   for (int i = 0; i < alAddress.size(); i++) {
    mailCCAddress[i] = new InternetAddress((String) alAddress
      .get(i));
   }
   break;
  }
  case mailtest.BCC: {
   ArrayList alAddress = StringHelper.spilt(strAddress, ",");
   mailBCCAddress = new Address[alAddress.size()];
   for (int i = 0; i < alAddress.size(); i++) {
    mailBCCAddress[i] = new InternetAddress((String) alAddress
      .get(i));
   }
   break;
  }
  }
 }
 public void setFileAttachment(String strFileAttachment)
   throws MessagingException, UnsupportedEncodingException {
  File path = new File(strFileAttachment);
  if (!path.exists() || path.isDirectory()) {
   return;
  }
  String strFileName = path.getName();
  MimeBodyPart mimebodypart = new MimeBodyPart();
  mimebodypart.setDataHandler(new DataHandler(new FileDataSource(
    strFileAttachment)));
   mimebodypart.setFileName(MimeUtility.encodeText(strFileName));

  mailBody.addBodyPart(mimebodypart);
 }
 public void setFromAddress(String strFromAddress) {
  this.mailFromAddress = strFromAddress;
 }
 public void setHtmlBody(String strHtmlBody) throws MessagingException {
  MimeBodyPart mimebodypart = new MimeBodyPart();
  mimebodypart.setDataHandler(new DataHandler(strHtmlBody,
    "text/html;charset=GBK"));
  mailBody.addBodyPart(mimebodypart);
 }
 
 public void setSMTPHost(String strSMTPHost, String strUser,
   String strPassword) {
  this.mailSMTPHost = strSMTPHost;
  this.mailUser = strUser;
  this.mailPassword = strPassword;
 }
 public void setSubject(String strSubject) {
  this.mailSubject = strSubject;
 }
 public void setTextBody(String strTextBody) throws MessagingException {
  MimeBodyPart mimebodypart = new MimeBodyPart();
  mimebodypart.setText(strTextBody, "GBK");
  mailBody.addBodyPart(mimebodypart);
 }
 public void setURLAttachment(String strURLAttachment)
   throws MessagingException, MalformedURLException {
  MimeBodyPart mimebodypart = new MimeBodyPart();
  mimebodypart.setDataHandler(new DataHandler(new URL(strURLAttachment)));
  mailBody.addBodyPart(mimebodypart);
 }
}