Pages

Thursday, March 26, 2015

sendmail using threading...

public static void sendMail(final String mailFrom, final String mailTo[], final String mailSubject, final String mailBody) {

newFixedThreadPool.execute(new Runnable() {
@Override
public void run() {
Thread.currentThread().setName("POST_MAIL_SENDER");
try {
long starttime = System.nanoTime();
log.info("Mailer Starts " + Arrays.asList(mailTo).toString() + ", " + mailFrom + ", " + mailSubject + ", " + Thread.currentThread().getId());
Date authInDate = new Date();
Session session = Session.getDefaultInstance(properties, null);
session.setDebug(false);

Message msg = new MimeMessage(session);
InternetAddress addressFrom = new InternetAddress(mailFrom);
msg.setFrom(addressFrom);

InternetAddress[] addressTo = new InternetAddress[mailTo.length];
for (int i = 0; i < mailTo.length; i++) {
addressTo[i] = new InternetAddress(mailTo[i]);
addressTo[i].validate();
}
msg.setRecipients(Message.RecipientType.TO, addressTo);
msg.setSubject(mailSubject);
msg.setContent(mailBody, MAIL_CONTENT_FORMAT);

Transport.send(msg);

String[] headers = msg.getHeader("Message-ID");
String sMessageId = "";
if (null != headers && headers.length > 0) {
sMessageId = headers[0];
}

Date authOutDate = new Date();
log.info(Arrays.asList(mailTo).toString() + ", " + mailFrom + ", " + mailSubject + ", " + sMessageId + ", " + CommonUtility.getTimeDifference(authInDate, authOutDate) / 1000.000000 + ", " + Thread.currentThread().getId());
long endTime = System.nanoTime();
log.info("Mailer Ends Time Taken = " + CommonUtility.getDifference(starttime, endTime));
} catch (Exception ex) {
ex.printStackTrace();
log.error("FAILURE," + Arrays.asList(mailTo).toString() + ", " + ex.getMessage());
log.error("FAILURE," + Arrays.asList(mailTo).toString() + ", " + ex.getMessage());
}
}
});
}