// Copyright © 2002 by Apple Computer, Inc., All Rights Reserved.
//
// You may incorporate this Apple sample code into your own code
// without restriction. This Apple sample code has been provided "AS IS"
// and the responsibility for its operation is yours. You may redistribute
// this code, but you are not permitted to redistribute it as
// "Apple sample code" after having made changes.
shell>cat src/ListManageServlet.java
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.naming.*;
import javax.rmi.*;
import javax.mail.*;
import javax.mail.internet.*;
public class ListManageServlet extends HttpServlet {
private Context ctx;
private MailListHome home;
private PrintWriter out;
public ListManageServlet() throws NamingException
{
try {
ctx = new InitialContext();
home = (MailListHome) PortableRemoteObject.narrow(ctx.lookup("MailList"),
MailListHome.class);
} catch (Exception e) { }
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Mailing List Manager</title>");
out.println("</head>");
out.println("<body bgcolor=\"white\">");
out.println("<h1> Email List: </h1>");
// first, see if there is an address to remove
String remove = request.getParameter("remove");
if ( remove != null)
{
try
{
home.remove(remove);
}
catch (Exception e) { out.println(e.toString()); }
}
// print the list, along with "remove" links
try
{
Collection co = home.findAll();
Iterator it = co.iterator();
while (it.hasNext())
{
MailList ml = (MailList) it.next();
out.println("email: " + ml.getEmail() );
out.println("<a href=\"/MailList/Manage?remove=" + ml.getEmail() + "\">remove</a><br>");
}
}
catch(Exception e)
{
out.println(e.toString());
}
// now display the "add" form
out.println("<form action=\"/MailList/Manage\" method=\"post\">");
out.println("<input type=\"text\" name=\"email\">");
out.println("<input type=\"submit\" value=\"add\">");
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Mailing List Manager</title>");
out.println("</head>");
out.println("<body bgcolor=\"white\">");
// add a new list member
String email = request.getParameter("email");
if ( email != "" && email != null)
{
try
{
MailList ml = home.create(email);
out.println("Added, thank you. <a href=\"/MailList/Manage\">Start again</a>.");
}
catch (Exception e) { out.println(e.toString()); }
}
else
{
out.println("Please specify email address.");
}
out.println("</body>");
out.println("</html>");
}
}
shell> cat src/SendServlet.java
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.naming.*;
import javax.rmi.*;
import javax.mail.*;
import javax.mail.internet.*;
public class SendServlet extends HttpServlet {
private Context ctx;
private MailListHome home;
private PrintWriter out;
private Session session;
public SendServlet() throws NamingException
{
///////// set this to your local SMTP server.
///////// note: "localhost" won't work on OS X unless you've already configured sendmail
String mailHost = "localhost";
//Get system properties
Properties props = System.getProperties();
//Specify the SMTP server
props.put("mail.smtp.host", mailHost);
// create a new Session object
this.session = Session.getInstance(props,null);
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Send to Mailing List</title>");
out.println("</head>");
out.println("<body bgcolor=\"white\">");
// display the mail form
out.println("<h1> Create Message </h1>");
out.println("<form action=\"/MailList/Send\" method=\"POST\">");
out.println("Mail From: <input type=\"text\" name=\"from\">");
out.println("<br>Subject: <input type=\"text\" name=\"subject\">");
out.println("<br>Message:<br><textarea name=\"message\" rows=\"10\" cols=\"40\"></textarea>");
out.println("<br><input type=\"submit\" value=\"Send\">");
out.println("</form>");
out.println("</body></html");
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Sending Message</title>");
out.println("</head>");
out.println("<body bgcolor=\"white\">");
// send mail to all users
String message = request.getParameter("message");
String from = request.getParameter("from");
String subject = request.getParameter("subject");
int count = 0;
try
{
ctx = new InitialContext();
home = (MailListHome) PortableRemoteObject.narrow(ctx.lookup("MailList"),
MailListHome.class);
Collection co = home.findAll();
Iterator it = co.iterator();
while (it.hasNext())
{
MailList ml = (MailList) it.next();
if (sendMessage(message, subject, ml.getEmail(), from ))
{
count++;
}
}
out.println("Sent " + count + " messages. Thank you.");
}
catch(Exception e)
{
out.println(e.toString());
}
}
boolean sendMessage(String mess, String subject, String email, String from)
{
try
{
// create a new MimeMessage object (using the Session created in the constructor)
Message message = new MimeMessage(this.session);
message.setFrom(new InternetAddress(from));
message.setRecipients(Message.RecipientType.TO, new InternetAddress[] { new InternetAddress(email) });
message.setSubject(subject);
message.setContent(mess, "text/plain");
Transport.send(message);
return true;
}
catch (Exception e)
{
out.println(e.toString());
return false;
}
}
}