Class MailMessage

java.lang.Object
org.apache.tools.mail.MailMessage

public class MailMessage extends Object
A class to help send SMTP email. This class is an improvement on the sun.net.smtp.SmtpClient class found in the JDK. This version has extra functionality, and can be used with JVMs that did not extend from the JDK. It's not as robust as the JavaMail Standard Extension classes, but it's easier to use and easier to install, and has an Open Source license.

It can be used like this:

 String mailhost = "localhost";  // or another mail host
 String from = "Mail Message Servlet <MailMessage@server.com>";
 String to = "to@you.com";
 String cc1 = "cc1@you.com";
 String cc2 = "cc2@you.com";
 String bcc = "bcc@you.com";

 MailMessage msg = new MailMessage(mailhost);
 msg.setPort(25);
 msg.from(from);
 msg.to(to);
 msg.cc(cc1);
 msg.cc(cc2);
 msg.bcc(bcc);
 msg.setSubject("Test subject");
 PrintStream out = msg.getPrintStream();

 Enumeration enum = req.getParameterNames();
 while (enum.hasMoreElements()) {
   String name = (String) enum.nextElement();
   String value = req.getParameter(name);
   out.println(name + " = " + value);
 }

 msg.sendAndClose();
 

Be sure to set the from address, then set the recipient addresses, then set the subject and other headers, then get the PrintStream, then write the message, and finally send and close. The class does minimal error checking internally; it counts on the mail host to complain if there's any malformatted input or out of order execution.

An attachment mechanism based on RFC 1521 could be implemented on top of this class. In the meanwhile, JavaMail is the best solution for sending email with attachments.

Still to do:

  • Figure out how to close the connection in case of error
Version:
1.1, 2000/03/19, added angle brackets to address, helps some servers version 1.0, 1999/12/29