Struts 2 email API

Struts 2 Email API

In this section we will learn by an example that how we can send email using struts 2 framework. Using java Mail library With having attachments. We need to follow some basic and certain steps for creating some the Emil example. To send an email, we are required a mail server url and communication port to send email.  In this article, we will be using gmail mail server that sends email using port number 465. A struts framework is used to create web application and provides an api to send emails. Send an email using gmail mail server using Struts Framework in Detail:

To send an email, first we need to configure a gmail mail server setting into our web application using a struts framework action. Now, we are required to place necessary email information that are required to send an email like sender email id, password, receiver id, subject of the email, and body of the email. These are defined as action class variables. Hence, create their getter() and setter() methods respectively.

We need to create the following files in our dynamic web project :-

 

 Step1:- Create a POJO Class for e mail utility Emailer.java

 

package r4r;

import java.util.Properties;

import javax.mail.Message;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import com.opensymphony.xwork2.ActionSupport;

public class Emailer extends ActionSupport {

private String from;

private String password;

private String to;

private String subject;

private String body;

static Properties properties = new Properties();

static

{

properties.put("mail.smtp.host", "smtp.gmail.com");

properties.put("mail.smtp.socketFactory.port", "465");

properties.put("mail.smtp.socketFactory.class",

"javax.net.ssl.SSLSocketFactory");

properties.put("mail.smtp.auth", "true");

properties.put("mail.smtp.port", "465");

}

public String execute()

{

String ret = SUCCESS;

try

{

Session session = Session.getDefaultInstance(properties,

new javax.mail.Authenticator() {

protected PasswordAuthentication

getPasswordAuthentication() {

return new

PasswordAuthentication(from, password);

}});

Message message = new MimeMessage(session);

message.setFrom(new InternetAddress(from));

message.setRecipients(Message.RecipientType.TO,

InternetAddress.parse(to));

message.setSubject(subject);

message.setText(body);

Transport.send(message);

}

catch(Exception e)

{

ret = ERROR;

e.printStackTrace();

}

return ret;

}

public String getFrom() {

return from;

}

public void setFrom(String from) {

this.from = from;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getTo() {

return to;

}

public void setTo(String to) {

this.to = to;

}

public String getSubject() {

return subject;

}

public void setSubject(String subject) {

this.subject = subject;

}

public String getBody() {

return body;

}

public void setBody(String body) {

this.body = body;

}

public static Properties getProperties() {

return properties;

}

public static void setProperties(Properties properties) {

Emailer.properties = properties;

}

}

 

 Step2:- Create a view index.jsp

 

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

pageEncoding="ISO-8859-1"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Email Form</title>

</head>

<body>

<em>Enter a gmail username and password

</em>

<form action="emailer" method="post">

<label for="from">From</label><br/>

<input type="text" name="from"/><br/>

<label for="password">Password</label><br/>

<input type="password" name="password"/><br/>

<label for="to">To</label><br/>

<input type="text" name="to"/><br/>

<label for="subject">Subject</label><br/>

<input type="text" name="subject"/><br/>

<label for="body">Body</label><br/>

<input type="text" name="body"/><br/>

<input type="submit" value="Send Email"/>

</form>

</body>

</html>

 

 Step3:- Create success.jsp

 

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

pageEncoding="ISO-8859-1"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Email Successful</title>

</head>

<body>

Your email to <s:property value="to"/> was sent successfully.

</body>

</html>

 

 Step4:- Create error.jsp

 

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

pageEncoding="ISO-8859-1"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Email Error</title>

</head>

<body>

There is a problem sending your email to <s:property value="to"/>.

</body>

</html>

 

 Step5:- Create error.jsp

 

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

pageEncoding="ISO-8859-1"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Email Error</title>

</head>

<body>

There is a problem sending your email to <s:property value="to"/>.

</body>

</html>

 

 Step6:- Create struts.xml

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<constant name="struts.devMode" value="true" />

<package name="helloworld" extends="struts-default">

<action name="emailer"

class="r4r.Emailer"

method="execute">

<result name="success">success.jsp</result>

<result name="error">error.jsp</result>

</action>

</package>

</struts>

 

 Step7:- Create web.xml

 

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

id="WebApp_ID" version="3.0">

<display-name>Struts 2</display-name>

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

<filter>

<filter-name>struts2</filter-name>

<filter-class>

org.apache.struts2.dispatcher.FilterDispatcher

</filter-class>

</filter>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

</web-app>