You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by Michael Davey <Mi...@coderage.org> on 2003/08/02 21:30:30 UTC

[patch] MailMessage.java

Hello,

Here is a patch for org/tools/mail/MailMessage.java that adds the following:

*   Support for message encoding (alphabets)
*   Fixes to headers for when an optional header hasn't been set (used 
to send blank headers) (we should check that at least one header from 
the set: to, cc, bcc, resent-to, resent-cc, resent-bcc exists - but 
don't at the moment)
*  changes to some comments

-- 
Michael


Re: [patch] MailMessage.java

Posted by Erik Hatcher <ja...@ehatchersolutions.com>.
Please create a Bugzilla issue for this and attach a patch file.

	Erik


On Saturday, August 2, 2003, at 03:30  PM, Michael Davey wrote:

> Hello,
>
> Here is a patch for org/tools/mail/MailMessage.java that adds the 
> following:
>
> *   Support for message encoding (alphabets)
> *   Fixes to headers for when an optional header hasn't been set (used 
> to send blank headers) (we should check that at least one header from 
> the set: to, cc, bcc, resent-to, resent-cc, resent-bcc exists - but 
> don't at the moment)
> *  changes to some comments
>
> -- 
> Michael
>
> Index: ant/src/main/org/apache/tools/mail/MailMessage.java
> ===================================================================
> RCS file: 
> /home/cvspublic/ant/src/main/org/apache/tools/mail/MailMessage.java,v
> retrieving revision 1.17
> diff -u -r1.17 MailMessage.java
> --- ant/src/main/org/apache/tools/mail/MailMessage.java	19 Jul 2003 
> 11:20:23 -0000	1.17
> +++ ant/src/main/org/apache/tools/mail/MailMessage.java	2 Aug 2003 
> 17:40:03 -0000
> @@ -66,6 +66,7 @@
>  import java.io.PrintStream;
>  import java.io.BufferedOutputStream;
>  import java.io.OutputStream;
> +import java.io.UnsupportedEncodingException;
>  import java.net.Socket;
>  import java.net.InetAddress;
>  import java.util.Vector;
> @@ -131,9 +132,15 @@
>   */
>  public class MailMessage {
>
> +    /** default mailhost */
> +    public static final String DEFAULT_HOST = "localhost";
> +
>      /** default port for SMTP: 25 */
>      public static final int DEFAULT_PORT = 25;
>
> +    /** default encoding: iso-8859-1 */
> +    public static final String DEFAULT_ENCODING = "iso-8859-1";
> +
>      /** host name for the mail server */
>      private String host;
>
> @@ -161,6 +168,8 @@
>
>      private Socket socket;
>
> +    private String encoding;
> +
>    /**
>     * Constructs a new MailMessage to send an email.
>     * Use localhost as the mail server with port 25.
> @@ -168,7 +177,7 @@
>     * @exception IOException if there's any problem contacting the 
> mail server
>     */
>    public MailMessage() throws IOException {
> -    this("localhost", DEFAULT_PORT);
> +    this(DEFAULT_HOST, DEFAULT_PORT, DEFAULT_ENCODING);
>    }
>
>    /**
> @@ -179,7 +188,7 @@
>     * @exception IOException if there's any problem contacting the 
> mail server
>     */
>    public MailMessage(String host) throws IOException {
> -      this(host, DEFAULT_PORT);
> +    this(host, DEFAULT_PORT, DEFAULT_ENCODING);
>    }
>
>    /**
> @@ -191,8 +200,14 @@
>     * @exception IOException if there's any problem contacting the 
> mail server
>     */
>    public MailMessage(String host, int port) throws IOException {
> +    this(host, port, DEFAULT_ENCODING);
> +  }
> +
> +  public MailMessage(String host, int port, String encoding)
> +  throws IOException, UnsupportedEncodingException {
>      this.port = port;
>      this.host = host;
> +    this.encoding = encoding;
>      replyto = new Vector();
>      to = new Vector();
>      cc = new Vector();
> @@ -299,19 +314,30 @@
>      return out;
>    }
>
> +
> +  // RFC 822 s4.1: "From:" header must be sent
> +  // We rely on error checking by the MTA
>    void setFromHeader() {
>      setHeader("From", from);
>    }
>
> +  // RFC 822 s4.1: "Reply-To:" header is optional
>    void setReplyToHeader() {
> +    if ( ! replyto.isEmpty() ) {
>        setHeader("Reply-To", vectorToList(replyto));
> +    }
>    }
> +
>    void setToHeader() {
> -    setHeader("To", vectorToList(to));
> +    if ( ! to.isEmpty() ) {
> +      setHeader("To", vectorToList(to));
> +    }
>    }
>
>    void setCcHeader() {
> -    setHeader("Cc", vectorToList(cc));
> +    if ( ! cc.isEmpty() ) {
> +      setHeader("Cc", vectorToList(cc));
> +    }
>    }
>
>    String vectorToList(Vector v) {
> @@ -327,7 +353,10 @@
>    }
>
>    void flushHeaders() throws IOException {
> -    // XXX Should I care about order here?
> +    // RFC 822 s4.1:
> +    //   "Header fields are NOT required to occur in any particular 
> order,
> +    //    except that the message body MUST occur AFTER the headers"
> +    // (the same section specifies a reccommended order, which we 
> ignore)
>      Enumeration e = headers.keys();
>      while (e.hasMoreElements()) {
>        String name = (String) e.nextElement();
> @@ -389,11 +418,12 @@
>
>    // * * * * * Raw protocol methods below here * * * * *
>
> -  void connect() throws IOException {
> +  void connect() throws IOException, UnsupportedEncodingException {
>      socket = new Socket(host, port);
>      out = new MailPrintStream(
>            new BufferedOutputStream(
> -          socket.getOutputStream()));
> +          socket.getOutputStream()),
> +          encoding);
>      in = new SmtpResponseReader(socket.getInputStream());
>      getReady();
>    }
> @@ -493,6 +523,12 @@
>      super(out, true);  // deprecated, but email is byte-oriented
>    }
>
> +  public MailPrintStream(OutputStream out, String encoding)
> +  throws UnsupportedEncodingException
> +  {
> +    super(out, true, encoding);  // deprecated, but email is 
> byte-oriented
> +  }
> +
>    // Mac does \n\r, but that's tough to distinguish from Windows 
> \r\n\r\n.
>    // Don't tackle that problem right now.
>    public void write(int b) {
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
> For additional commands, e-mail: dev-help@ant.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org