From 43166e68847e0e309441e5aaba7c93d9e331f2cf Mon Sep 17 00:00:00 2001
From: Stefan Bodewig
diff --git a/src/main/org/apache/tools/ant/listener/MailLogger.java b/src/main/org/apache/tools/ant/listener/MailLogger.java index 60732b0a1..29757cd76 100644 --- a/src/main/org/apache/tools/ant/listener/MailLogger.java +++ b/src/main/org/apache/tools/ant/listener/MailLogger.java @@ -36,6 +36,7 @@ import org.apache.tools.ant.taskdefs.email.Message; import org.apache.tools.ant.taskdefs.email.Mailer; import org.apache.tools.ant.util.ClasspathUtils; import org.apache.tools.ant.util.DateUtils; +import org.apache.tools.ant.util.FileUtils; import org.apache.tools.ant.util.StringUtils; import org.apache.tools.mail.MailMessage; @@ -70,6 +71,8 @@ public class MailLogger extends DefaultLogger { /** Buffer in which the message is constructed prior to sending */ private StringBuffer buffer = new StringBuffer(); + private static final String DEFAULT_MIME_TYPE = "text/plain"; + /** * Sends an e-mail with the log results. * @@ -93,13 +96,7 @@ public class MailLogger extends DefaultLogger { } catch (IOException ioe) { // ignore because properties file is not required } finally { - if (is != null) { - try { - is.close(); - } catch (IOException e) { - // ignore - } - } + FileUtils.close(is); } } @@ -132,6 +129,8 @@ public class MailLogger extends DefaultLogger { .from(getValue(properties, "from", null)) .replytoList(getValue(properties, "replyto", "")) .toList(getValue(properties, prefix + ".to", null)) + .mimeType(getValue(properties, "mimeType", DEFAULT_MIME_TYPE)) + .charset(getValue(properties, "charset", "")) .subject(getValue( properties, prefix + ".subject", (success) ? "Build Success" : "Build Failure")); @@ -222,6 +221,22 @@ public class MailLogger extends DefaultLogger { this.subject = subject; return this; } + private String charset; + public String charset() { + return charset; + } + public Values charset(String charset) { + this.charset = charset; + return this; + } + private String mimeType; + public String mimeType() { + return mimeType; + } + public Values mimeType(String mimeType) { + this.mimeType = mimeType; + return this; + } } /** @@ -289,6 +304,13 @@ public class MailLogger extends DefaultLogger { mailMessage.setSubject(values.subject()); + if (values.charset().length() > 0) { + mailMessage.setHeader("Content-Type", values.mimeType() + + "; charset=\"" + values.charset() + "\""); + } else { + mailMessage.setHeader("Content-Type", values.mimeType()); + } + PrintStream ps = mailMessage.getPrintStream(); ps.println(message); @@ -301,7 +323,6 @@ public class MailLogger extends DefaultLogger { * @param message mail body */ private void sendMimeMail(Project project, Values values, String message) { - // convert the replyTo string into a vector of emailaddresses Mailer mailer = null; try { mailer = (Mailer) ClasspathUtils.newInstance( @@ -312,6 +333,7 @@ public class MailLogger extends DefaultLogger { log("Failed to initialise MIME mail: " + t.getMessage()); return; } + // convert the replyTo string into a vector of emailaddresses Vector replyToList = vectorizeEmailAddresses(values.replytoList()); mailer.setHost(values.mailhost()); mailer.setPort(values.port()); @@ -320,6 +342,10 @@ public class MailLogger extends DefaultLogger { mailer.setSSL(values.ssl()); Message mymessage = new Message(message); mymessage.setProject(project); + mymessage.setMimeType(values.mimeType()); + if (values.charset().length() > 0) { + mymessage.setCharset(values.charset()); + } mailer.setMessage(mymessage); mailer.setFrom(new EmailAddress(values.from())); mailer.setReplyToList(replyToList);