Sunday, October 30, 2011

How to send Email through Java


How to send email using java mail api...

Following class will describes how to send email through java


import java.io.IOException;
import java.util.List;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.apache.log4j.Logger;

/**
 * @created by velmurugan pousel
 * @created on Oct 17, 2011
 * @project TestBatch
 */
public class TestEmailUtil {

 private final static Logger logger = Logger.getLogger(TestJobLauncher.class);

 private static  Properties emailProps ;

 /**
  * method to load the email host/port information and construct the email properties to
  * get the session to send mail
  * @throws TestException
  */
 public void init() throws TestException {

  logger.info(" loading the email host information");
  try {
   if (emailProps == null) {
    emailProps = new Properties();
    Properties prop =  new Properties();
    prop.load(getClass().getClassLoader().getResourceAsStream(ExtractULC.Test_EMAIL_CONFIG_FILE_NAME));
    
     //mail.host=Smtp.test.com
    //mail.port=25
    //mail.auth=false
    //mail.auth.userid=
    //mail.auth.password=
    //mail.from=
    //mail.cc=dl-test-Tech_Suport
    emailProps.put("mail.smtp.host", prop.get(ExtractULC.EMAIL_HOST_NAME));
    emailProps.put("mail.smtp.port", prop.get(ExtractULC.EMAIL_HOST_PORT));
    emailProps.put("mail.smtp.auth", prop.get(ExtractULC.EMAIL_AUTH_LEVEL));
    emailProps.put("mail.from", prop.get(ExtractULC.EMAIL_FROM_ADDRESS));
    emailProps.put("mail.cc", prop.get(ExtractULC.EMAIL_CC_ADDRESS));
   } 
  } catch (IOException e) {
   logger.error(" Error during email information loading.."+ e.getMessage());
   throw new TestException(e);
  }
 }
 /**
  * util method to send the email notification
  * @param recipients
  * @param subject
  * @param message
  * @param from
  * @throws MessagingException
  * @throws TestException
  */
 public void postMail(String recipients[], String subject, String message,
   String from) throws MessagingException, TestException {
  logger.info(" entering into the postmail method.....");
  boolean debug = false;
  try {
   init();
   // create some properties and get the default Session
   Session session = Session.getDefaultInstance(emailProps, null);
   session.setDebug(debug);
   // create a message
   Message msg = new MimeMessage(session);
   
   // set the from and to address
   InternetAddress addressFrom = new InternetAddress(emailProps.getProperty(ExtractULC.EMAIL_FROM_ADDRESS));
   msg.setFrom(addressFrom);
     
   // set the cc address incase if its error message
   if (from != null && from.trim().length() > 0){  
    InternetAddress addressCC = new InternetAddress(emailProps.getProperty(ExtractULC.EMAIL_CC_ADDRESS));
    msg.setFrom(addressCC);
   }
      
   InternetAddress[] addressTo = new InternetAddress[recipients.length];
   for (int i = 0; i < recipients.length; i++) {
    addressTo[i] = new InternetAddress(recipients[i]);
   }
   msg.setRecipients(Message.RecipientType.TO, addressTo);
   msg.addHeader("TestHeader", "Test header");
   // Setting the Subject and Content Type
   msg.setSubject(subject);
   msg.setContent(message, "text/plain");
   Transport.send(msg);
   logger.info(" email successfully send...");
  } catch (Throwable e) {
   logger.error(" Error during email send....");
      throw new TestException(e);
  }
 }
 /**
  * method to send the email notification into the internal vendors
  *
  * @param emailIds
  * @param sub - subject to send
  * @param body
  * @return
  * @throws TestException
  */
 public boolean sendMail(List<String> emailIds, String sub, String body, String to)
   throws TestException {
  try {
   //postMail(Collections., sub, body, "");
  } catch (Throwable e) {
   throw new TestException(e);
  }
  return false;
 }
 /**
  * method to send the email notification into the internal vendors
  *
  * @param emailIds
  * @param sub - subject to send
  * @param body
  * @return
  * @throws TestException
  */
 public boolean sendMail(String emailId, String sub, String body)
   throws TestException {
  try {
   postMail(new String[] { emailId }, sub, body, "");
  } catch (Throwable e) {
   throw new TestException(e);
  }
  return false;
 }
 /**
  * method to send the email notification into the internal vendors
  *
  * @param emailIds
  * @param sub - subject to send
  * @param body
  * @return
  * @throws TestException
  */
 public boolean sendMail(String emailId, String sub, String body, boolean addCC)
   throws TestException {
  try {
   postMail(new String[] { emailId }, sub, body, "cc");
  } catch (Throwable e) {
   throw new TestException(e);
  }
  return false;
 }
  
 /**
  * method to send the email notification into the internal vendors
  *
  * @param emailIds
  * @param sub - subject to send
  * @param body
  * @return
  * @throws TestException
  */
 public boolean sendMail(String[] emailIds, String sub, String body, boolean addCC)
   throws TestException {
  try {
   postMail(emailIds , sub, body, "cc");
  } catch (Throwable e) {
   throw new TestException(e);
  }
  return false;
 }
      
 /**
  * method to send the email notification into the internal vendors
  * @param emailIds
  * @param sub - subject to send
  * @param body
  * @return
  * @throws TestException
  */
 public boolean sendMail(String[] emailIds, String sub, String body)
  throws TestException {
  try {
   postMail(emailIds, sub, body, "");
  } catch (Throwable e) {
   throw new TestException(e);
  }
  return false;
 } 

 public static void main(String[] args) {
  try {
   String[] mailIds = new String[]{"vels007@gmailcom"};
   new TestEmailUtil().postMail(mailIds, "Test", " Test message", "");
  } catch (Throwable e){
   e.printStackTrace();
  }
 }
}

How to get the Exception StackTrace content in java

How to get the error/exception Stacktrace in Java


/**
 * util method to get the full stacktrace of an exception
 * and return the message as string
 * @param e
 * @return
 */
public String getExceptionStack(Throwable e) {
 String errorMessage ="" ;
 try {
       StringWriter traceWriter = new StringWriter();
       PrintWriter printWriter = new PrintWriter(traceWriter, false);
       e.printStackTrace(printWriter);
       printWriter.close();
       errorMessage = traceWriter.getBuffer().toString();
 } catch (Throwable e1) {
      logger.error(e1.getMessage());
 }
   return errorMessage;
}




Find out Number of Days in Month/Year using java

How to find out number of days in a given month and year

Code snippet to find out the numbe rof days in a month.

...
..
/**
 * util method to find the number of day in the given passed month
 * @param month  
 * @return last days of the month
 */
public int getDaysInMonth(Date dt) {

 if (dt == null) dt = new Date();

 Calendar cal = Calendar.getInstance();
 cal.setTime(dt);

 return cal.getActualMaximum(cal.DAY_OF_MONTH);


/**
 * util method to find the last day of the given  year
 * @param month
 * @param year
 * @return last days of the month
 */
public int getDaysInYear(Date dt) {

 if (dt == null) dt = new Date();

 Calendar cal = Calendar.getInstance();
 cal.setTime(dt);

 return cal.getActualMaximum(cal.DAY_OF_YEAR);
}


Main Method to test this


public static void main(String[] args) {
 try {   
   
  System.out.println(" last day os the month..."+ new ReqDXCommonUtil().getDaysInMonth(new Date()));
 } catch (Throwable e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
}