git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1577617 13f79535-47bb-0310-9956-ffa450edef68master
@@ -124,6 +124,11 @@ Other changes: | |||
Bugzilla Report 55667 | |||
Bugzilla Report 56156 | |||
* the nested <message> elements of <mail> now have an optional | |||
inputEncoding attribute that can be used to specify the encoding of | |||
files read that don't use the platform's default encoding. | |||
Bugzilla Report 56258 | |||
Changes from Ant 1.9.2 TO Ant 1.9.3 | |||
=================================== | |||
@@ -98,7 +98,19 @@ | |||
<td valign="top">File to send as the body of the email. Property | |||
values in the file will be expanded.</td> | |||
</tr> | |||
<td valign="top">messagemimetype</td> | |||
<tr> | |||
<td valign="top">messagefileinputencoding</td> | |||
<td valign="top"> | |||
Specifies the encoding of the input file. Please see | |||
<a href="http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html"> | |||
Supported Encodings</a> for a list of possible | |||
values. Defaults to the platform's default character | |||
encoding. <em>Since Ant 1.9.4</em> | |||
</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">messagemimetype</td> | |||
<td valign="top">The content type of the message. The default is | |||
<code>text/plain</code>.</td> | |||
<td align="center" valign="top">No</td> | |||
@@ -253,6 +265,17 @@ attributes:</p> | |||
These options are mutually exclusive.</td> | |||
<td align="center" valign="top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">inputencoding</td> | |||
<td valign="top"> | |||
Specifies the encoding of the input file. Please see | |||
<a href="http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html"> | |||
Supported Encodings</a> for a list of possible | |||
values. Defaults to the platform's default character | |||
encoding. <em>Since Ant 1.9.4</em> | |||
</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
</table> | |||
<p>If the <code>src</code> attribute is not specified, then text can be added | |||
@@ -78,6 +78,7 @@ public class EmailTask extends Task { | |||
private boolean failOnError = true; | |||
private boolean includeFileNames = false; | |||
private String messageMimeType = null; | |||
private String messageFileInputEncoding; | |||
/* special headers */ | |||
/** sender */ | |||
private EmailAddress from = null; | |||
@@ -527,6 +528,7 @@ public class EmailTask extends Task { | |||
} | |||
message.setCharset(charset); | |||
} | |||
message.setInputEncoding(messageFileInputEncoding); | |||
// identify which files should be attached | |||
Vector<File> files = new Vector<File>(); | |||
@@ -601,7 +603,7 @@ public class EmailTask extends Task { | |||
/** | |||
* Sets the character set of mail message. | |||
* Will be ignored if mimeType contains ....; Charset=... substring or | |||
* encoding is not a <code>mime</code>. | |||
* encoding is not <code>mime</code>. | |||
* @param charset the character encoding to use. | |||
* @since Ant 1.6 | |||
*/ | |||
@@ -619,5 +621,15 @@ public class EmailTask extends Task { | |||
return charset; | |||
} | |||
/** | |||
* Sets the encoding to expect when reading the message from a file. | |||
* <p>Will be ignored if the message has been specified inline.</p> | |||
* @param encoding the name of the charset used | |||
* @since Ant 1.9.4 | |||
*/ | |||
public void setMessageFileInputEncoding(String encoding) { | |||
messageFileInputEncoding = encoding; | |||
} | |||
} | |||
@@ -20,10 +20,13 @@ package org.apache.tools.ant.taskdefs.email; | |||
import java.io.BufferedReader; | |||
import java.io.BufferedWriter; | |||
import java.io.File; | |||
import java.io.FileInputStream; | |||
import java.io.FileReader; | |||
import java.io.IOException; | |||
import java.io.InputStreamReader; | |||
import java.io.OutputStreamWriter; | |||
import java.io.PrintStream; | |||
import java.io.Reader; | |||
import org.apache.tools.ant.ProjectComponent; | |||
@@ -38,6 +41,7 @@ public class Message extends ProjectComponent { | |||
private String mimeType = "text/plain"; | |||
private boolean specified = false; | |||
private String charset = null; | |||
private String inputEncoding; | |||
/** Creates a new empty message */ | |||
public Message() { | |||
@@ -122,7 +126,7 @@ public class Message extends ProjectComponent { | |||
: new BufferedWriter(new OutputStreamWriter(ps)); | |||
if (messageSource != null) { | |||
// Read message from a file | |||
FileReader freader = new FileReader(messageSource); | |||
Reader freader = getReader(messageSource); | |||
try { | |||
BufferedReader in = new BufferedReader(freader); | |||
@@ -172,5 +176,28 @@ public class Message extends ProjectComponent { | |||
public String getCharset() { | |||
return charset; | |||
} | |||
/** | |||
* Sets the encoding to expect when reading the message from a file. | |||
* <p>Will be ignored if the message has been specified inline.</p> | |||
* @param encoding the name of the charset used | |||
* @since Ant 1.9.4 | |||
*/ | |||
public void setInputEncoding(String encoding) { | |||
this.inputEncoding = encoding; | |||
} | |||
private Reader getReader(File f) throws IOException { | |||
if (inputEncoding != null) { | |||
FileInputStream fis = new FileInputStream(f); | |||
try { | |||
return new InputStreamReader(fis, inputEncoding); | |||
} catch (IOException ex) { | |||
fis.close(); | |||
throw ex; | |||
} | |||
} | |||
return new FileReader(f); | |||
} | |||
} | |||