Send HTML email in Java using URL as the content body

With the help of the Apache commons HttpClient we make a request to the given URL and then read the response data to insert that into the body of the email. The HTML email is done using the HtmlEmail class also available in the Apache commons library. This Java example uses gmail as its SMTP server but you can change that to anything of your choice, also the following jars are needed in the project classpath
  • commons-email-1.2.jar
  • commons-logging-1.1.1.jar
  • httpclient-4.1.1.jar
  • httpcore-4.1.jar
  • mail.jar
package com.as400samplecode;

import java.io.IOException;

import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

public class SendHTMLEmail {

 public static void main(String[] args) {

  try {

   HttpClient httpclient = new DefaultHttpClient();
   HttpPost httpPost = new HttpPost("http://demo.mysamplecode.com");
   HttpResponse response = httpclient.execute(httpPost);
   HttpEntity resEntity = response.getEntity();

   String responseBody = "";
   if (resEntity != null) {
    responseBody = EntityUtils.toString(resEntity);
   }

   HtmlEmail htmlEmail = new HtmlEmail();
   htmlEmail.setHostName("smtp.gmail.com");
   htmlEmail.setSmtpPort(587);
   htmlEmail.setDebug(true);
   htmlEmail.setAuthenticator(new DefaultAuthenticator("userId", "password"));
   htmlEmail.setTLS(true);
   htmlEmail.addTo("recipient@gmail.com", "recipient");
   htmlEmail.setFrom("sender@gmail.com", "sender");
   htmlEmail.setSubject("Send HTML email with body content from URI");
   htmlEmail.setHtmlMsg(responseBody);
   htmlEmail.send();

  } catch (EmailException e) {
   e.printStackTrace();
  } catch (ParseException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }

 }

}