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![]()
Result Email sending Form
Result if OK