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