Save This Page
Home » apache-ant-1.7.1-src » org.apache.tools » mail » [javadoc | source]
org.apache.tools.mail
public class: MailMessage [javadoc | source]
java.lang.Object
   org.apache.tools.mail.MailMessage
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 recepient 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:

Field Summary
public static final  String DEFAULT_HOST    default mailhost 
public static final  int DEFAULT_PORT    default port for SMTP: 25 
Constructor:
 public MailMessage() throws IOException 
    Constructs a new MailMessage to send an email. Use localhost as the mail server with port 25.
    Throws:
    IOException - if there's any problem contacting the mail server
    exception: IOException - if there's any problem contacting the mail server
 public MailMessage(String host) throws IOException 
    Constructs a new MailMessage to send an email. Use the given host as the mail server with port 25.
    Parameters:
    host - the mail server to use
    Throws:
    IOException - if there's any problem contacting the mail server
    exception: IOException - if there's any problem contacting the mail server
 public MailMessage(String host,
    int port) throws IOException 
    Constructs a new MailMessage to send an email. Use the given host and port as the mail server.
    Parameters:
    host - the mail server to use
    port - the port to connect to
    Throws:
    IOException - if there's any problem contacting the mail server
    exception: IOException - if there's any problem contacting the mail server
Method from org.apache.tools.mail.MailMessage Summary:
bcc,   cc,   connect,   disconnect,   flushHeaders,   from,   getPrintStream,   getReady,   isResponseOK,   replyto,   sanitizeAddress,   send,   sendAndClose,   sendData,   sendDot,   sendFrom,   sendHelo,   sendQuit,   sendRcpt,   setCcHeader,   setFromHeader,   setHeader,   setPort,   setReplyToHeader,   setSubject,   setToHeader,   to,   vectorToList
Methods from java.lang.Object:
equals,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from org.apache.tools.mail.MailMessage Detail:
 public  void bcc(String bcc) throws IOException 
    Sets the bcc address. Does NOT set any header since it's a *blind* copy. This method may be called multiple times.
 public  void cc(String cc) throws IOException 
    Sets the cc address. Also sets the "Cc" header. This method may be called multiple times.
  void connect() throws IOException 
  void disconnect() throws IOException 
  void flushHeaders() throws IOException 
 public  void from(String from) throws IOException 
    Sets the from address. Also sets the "From" header. This method should be called only once.
 public PrintStream getPrintStream() throws IOException 
    Returns a PrintStream that can be used to write the body of the message. A stream is used since email bodies are byte-oriented. A writer can be wrapped on top if necessary for internationalization. This is actually done in Message.java
  void getReady() throws IOException 
 boolean isResponseOK(String response,
    int[] ok) 
 public  void replyto(String rto) 
    Sets the replyto address This method may be called multiple times.
 static String sanitizeAddress(String s) 
  void send(String msg,
    int[] ok) throws IOException 
 public  void sendAndClose() throws IOException 
    Sends the message and closes the connection to the server. The MailMessage object cannot be reused.
  void sendData() throws IOException 
  void sendDot() throws IOException 
  void sendFrom(String from) throws IOException 
  void sendHelo() throws IOException 
  void sendQuit() throws IOException 
  void sendRcpt(String rcpt) throws IOException 
  void setCcHeader() 
  void setFromHeader() 
 public  void setHeader(String name,
    String value) 
    Sets the named header to the given value. RFC 822 provides the rules for what text may constitute a header name and value.
 public  void setPort(int port) 
    Set the port to connect to the SMTP host.
  void setReplyToHeader() 
 public  void setSubject(String subj) 
    Sets the subject of the mail message. Actually sets the "Subject" header.
  void setToHeader() 
 public  void to(String to) throws IOException 
    Sets the to address. Also sets the "To" header. This method may be called multiple times.
 String vectorToList(Vector v)