Java Email (SSL, TLC)

Sending Email through Java

First, You need to receive GOOGLE APP password
Receive Google App Password

Download email JAR or define dependencies from this page
Javax mail JAR page

Create Java Web Dynamic Project

Interface

package interfaces;

import java.util.Properties;

public interface EmailI 
{
	
	public static final String USERNAME = "YOUR_EMAIL";
	public static final String PASSWORD = "YOUR_APP_PASSWORD";
	
	public static final String SMTP_GMAIL_COM = "smtp.gmail.com";
	public static final String MAIL_SMTP_PORT = "587";
	public static final String MAIL_SMTP_AUTH = "true";
	public static final String MAIL_SMTP_STARTTLS_ENABLE = "true";
   
   }

Data Access Object Level (DAO)

package DAO;

/**
 * TLS send email implimentation
 * 
 */
import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import interfaces.EmailI;

public class EmailDAO implements EmailI
{	
	public  Properties getProperties()
	{
		  Properties prop = new Properties();
		    prop.put("mail.smtp.host", SMTP_GMAIL_COM);
		    prop.put("mail.smtp.port", MAIL_SMTP_PORT);
		    prop.put("mail.smtp.auth", MAIL_SMTP_AUTH);
		    prop.put("mail.smtp.starttls.enable", MAIL_SMTP_STARTTLS_ENABLE); //TLS
		    
		  return  prop;
	}
	
	
	public  Session getSession( Properties prop)
	{
		    Session session = Session.getInstance(prop,
		            new javax.mail.Authenticator() {  protected PasswordAuthentication getPasswordAuthentication()
		                 {    return new PasswordAuthentication(USERNAME, PASSWORD);       }            });		    
		  return  session;
	}
	
	
	public void sendMail(String fromEmail, String subject, String mes, Session session)
	  {
	      try {
	      	Message message = new MimeMessage(session);
	      	message.setFrom(new InternetAddress(fromEmail));  //change
	      	message.setRecipients (   Message.RecipientType.TO,   InternetAddress.parse("dzsamoila@gmail.com, admin@advicenyc.com")   );
	      	
	      message.setSubject(subject);    // change subject
	      message.setText(mes+" "+fromEmail);  // change message

	      Transport.send(message);
	      System.out.println("Done");

	  } catch (MessagingException e) 
	      { 
		 	e.printStackTrace();  
		  }	  
	}   

}

Controller level with endpoints


package controller;

import java.io.IOException;
import java.sql.SQLException;
import java.util.Date;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import DAO.EmailDAO;

/**
 * Servlet implementation class RegisterServlet1
 */
@WebServlet("/ContactServlet")
public class ContactServlet extends HttpServlet
{
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ContactServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
	{
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
	{
		String subject  = request.getParameter("subject");
		String email     = request.getParameter("email");		
		String message     = request.getParameter("message");

		EmailDAO emailDao = new EmailDAO();
		Properties props = emailDao.getProperties();		
		 Session session = emailDao.getSession(props);
		
		
    	  if (    (email!= null) &&(!email.isEmpty())    )
    	  {
    		 if (    (message!= null) &&(!message.isEmpty())   )
    		  {   	 System.out.println("You did it!");      			   			
    			    			  
    			try{	//Action
    				emailDao.sendMail(email, subject, message, session);	
    				}// try   
    	    	catch (Exception e)
    	    	{    	    		
    	    		request.setAttribute("errMessage", e); 
    	    		request.getRequestDispatcher("/index.jsp").forward(request, response);//forwarding the request
    	    	}
    			
    			request.setAttribute("registerOk", "You registered, please login!"); 	 			
				request.getRequestDispatcher("/ok.jsp").forward(request, response);
    			 
    		  }
    		 else //message empty
    		 {	 request.setAttribute("errMessage", "message cannot be blank"); 
    			 request.getRequestDispatcher("/register.jsp").forward(request, response);//forwarding the request
    		 }
    		  
    		  
    	  }
    	  else  //Empty email
    	  {   	 request.setAttribute("errMessage", "email cannot be blank"); 
    			 request.getRequestDispatcher("/register.jsp").forward(request, response);//forwarding the request    
    	  }
	}

	/**
	 * @see HttpServlet#doPut(HttpServletRequest, HttpServletResponse)
	 */
	protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {	}

}


View level PATH: /ProJECT/WebContent/index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
				
						
					<div class="post">
						<h2 class="title-post">Contact Us </h2>
						
						  <form action="ContactServlet" method="post" onsubmit="return validate()">
						  
						<div>			
		<input type="text" name="subject" id="input-text" value="" placeholder="subject" /> <br/><br/>
		<input type="text" name="email" id="input-text" value="" placeholder="email" /> <br/><br/>
		
		<textarea name="message" id="textarea" rows="10" cols="80" placeholder="enter your message..."></textarea>
		
		<br/>
		
	
										
<button class="button register_button" id="">Submit</button>
                       </div>
                       
								</form>
						
						
						
					</div>   <!-- div post -->
					
	</body>
</html>			

Ok page /ProJECT/WebContent/ok.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>		
					<div class="post">
					<h3>You sent your Info </h3>
					</div>   <!-- div post -->
					
	</body>
</html>			

Structure of project
Structure


Result Email sending Form

email sending

email

Result if OK

ok 200

ok 200