For this example we are using gmail as our SMTP server. To create the HTML content that needs to go in the message body we have taken help of the WYSIWYG editor based on jQuery named jWysiwyg. Add following jars in your project classpath for this example to work
- commons-email-1.2.jar (http://commons.apache.org/email/download_email.cgi)
- mail.jar (http://www.oracle.com/technetwork/java/javamail/index.html)
Source for the JSP - htmlEmail.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">
<meta name="robots" content="noindex,nofollow" />
<title>HTML email using Apache Commons API</title>
<link rel="stylesheet" href="/resources/themes/master.css" type="text/css" />
<link rel="stylesheet" href="/resources/themes/jquery.wysiwyg.css" type="text/css" />
<link
href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css"
rel="stylesheet" type="text/css" />
<script
src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"
type="text/javascript"></script>
<script
src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"
type="text/javascript"></script>
<script
src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.js"
type="text/javascript"></script>
<script src="/resources/scripts/mysamplecode.js" type="text/javascript"></script>
<script type="text/javascript" src="/resources/scripts/jquery.wysiwyg.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#samplecode").validate({
rules: {
mailServer: "required",
fromName: "required",
fromEmail: "required",
toName: "required",
toEmail: "required",
subject: "required",
password: {
required: function(element) {
return $.trim($("#userId").val()) != '';
}
}
}
});
$(function(){
$('#messageBody').wysiwyg();
$('#messageBody').wysiwyg('clear');
});
});
</script>
</head>
<body>
<div id="allContent">
<%@include file="/header.jsp"%>
<div id="myContent">
<div>
<%
boolean success = false;
if(request.getAttribute("success") != null){
success = (Boolean) request.getAttribute("success");
}
if (success){
%>
<font color="green">
<b><br/>Thank you! You message has been sent.</b>
<br/>
</font>
<%
}
else {
if(request.getAttribute("success") != null){
%>
<font color="red">
<b><br/>Error! You message was not sent.</b>
<br/>
</font>
<%
}
}
%>
</div>
<form id="samplecode" name="samplecode" method="POST" action="<%= request.getContextPath() %>/SendHTMLEmail">
<fieldset>
<legend><b> HTML Email using Apache Commons API </b></legend>
<table>
<tr>
<td>
<label for="mailServer"> Mail Server Host Name </label>
</td>
<td>
<input id="mailServer" type="text" name="mailServer" size="50" value="smtp.gmail.com"/>
</td>
</tr>
<tr>
<td>
<label for="userId"> Mail Server User Id </label>
</td>
<td>
<input id="userId" type="text" name="userId" size="30" value=""/>
<i>(In case your mail server needs Authentication)</i>
</td>
</tr>
<tr>
<td>
<label for="password"> Mail Server Password </label>
</td>
<td>
<input id="password" type="password" name="password" size="30" value=""/>
<i>(In case your mail server needs Authentication)</i>
</td>
</tr>
<tr>
<td colspan="2">
</td>
</tr>
<tr>
<td>
<label for="fromName"> Sender's Name </label>
</td>
<td>
<input id="fromName" type="text" name="fromName" size="30" value=""/>
</td>
</tr>
<tr>
<td>
<label for="fromEmail"> Sender's Email Address </label>
</td>
<td>
<input id="fromEmail" type="text" name="fromEmail" size="50" value=""/>
</td>
</tr>
<tr>
<td>
<label for="toName"> Recipient's Name </label>
</td>
<td>
<input id="toName" type="text" name="toName" size="30" value=""/>
</td>
</tr>
<tr>
<td>
<label for="toEmail"> Recipient's Email Address </label>
</td>
<td>
<input id="toEmail" type="text" name="toEmail" size="50" value=""/>
</td>
</tr>
<tr>
<td colspan="2">
</td>
</tr>
<tr>
<td>
<label for="subject"> Subject </label>
</td>
<td>
<input id="subject" type="text" name="subject" size="50" value=""/>
</td>
</tr>
<tr>
<td class="formText" >
<label for="messageBody"> Message </label>
</td>
<td>
<textarea id="messageBody" name="messageBody" rows="10" cols="100" maxlength="1000"></textarea>
</td>
</tr>
<tr>
<td class="formText" >
</td>
<td>
<input id="sendEmail" type="submit" value="Send my Email" />
</td>
</tr>
</table>
</fieldset>
</form>
</div>
</div>
<%@include file="/footer.jsp"%>
<div></div>
</body>
</html>
Source for the Java Servlet - SendHTMLEmail.java
package com.as400samplecode;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
public class SendHTMLEmail extends HttpServlet {
private static final long serialVersionUID = 1L;
public SendHTMLEmail() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String mailServer = request.getParameter("mailServer").trim();
String userId = request.getParameter("userId").trim();
String password = request.getParameter("password").trim();
String fromName = request.getParameter("fromName").trim();
String fromEmail = request.getParameter("fromEmail").trim();
String toName = request.getParameter("toName").trim();
String toEmail = request.getParameter("toEmail").trim();
String subject = request.getParameter("subject").trim();
String messageBody = request.getParameter("messageBody").trim();
StringBuilder sb = new StringBuilder();
sb.append("<html>");
sb.append("<body>");
sb.append("<table>");
sb.append(messageBody);
sb.append("</table>");
sb.append("</body>");
sb.append("</html>");
try {
// Sending HTML formatted email
HtmlEmail htmlEmail = new HtmlEmail();
// set the address of the outgoing SMTP server that will be used to send the email
htmlEmail.setHostName(mailServer);
// set to true if you want to debug
htmlEmail.setDebug(true);
// if the SMTP server needs authentication
if(!userId.trim().equalsIgnoreCase("") && !password.trim().equalsIgnoreCase("")){
htmlEmail.setAuthenticator(new DefaultAuthenticator(userId, password));
htmlEmail.setTLS(true);
}
// set the recipient
htmlEmail.addTo(toEmail, toName);
// set the sender
htmlEmail.setFrom(fromEmail, fromName);
// set the subject
htmlEmail.setSubject(subject);
// set the email body
htmlEmail.setHtmlMsg(sb.toString());
// finally send the email
htmlEmail.send();
request.setAttribute("success",true);
} catch (EmailException e) {
request.setAttribute("success",false);
e.printStackTrace();
}
getServletContext().getRequestDispatcher("/pages/htmlEmail.jsp").forward(request, response);
}
}

No comments:
Post a Comment
NO JUNK, Please try to keep this clean and related to the topic at hand.
Comments are for users to ask questions, collaborate or improve on existing.