Author: niklas
Date: Mon Jul 21 03:20:00 2008
New Revision: 678383
URL: http://svn.apache.org/viewvc?rev=678383&view=rev
Log:
Resolved MIME4J-59: The TextBody instances created when parsing a message will
now handle the decoding/encoding of qp and base64 bodies automatically as it
was done in Mime4j 0.3.
Added:
james/mime4j/trunk/src/test/resources/testmsgs/qp-body.msg
james/mime4j/trunk/src/test/resources/testmsgs/qp-body.xml
james/mime4j/trunk/src/test/resources/testmsgs/qp-body_decoded.xml
james/mime4j/trunk/src/test/resources/testmsgs/qp-body_decoded_1.txt
Modified:
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Message.java
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/TempFileTextBody.java
Modified:
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Message.java
URL:
http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Message.java?rev=678383&r1=678382&r2=678383&view=diff
==============================================================================
---
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Message.java
(original)
+++
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Message.java
Mon Jul 21 03:20:00 2008
@@ -184,7 +184,7 @@
final Body body;
if (bd.getMimeType().startsWith("text/")) {
- body = new TempFileTextBody(is, bd.getCharset());
+ body = new TempFileTextBody(is, bd.getCharset(), enc);
} else {
body = new TempFileBinaryBody(is, enc);
}
Modified:
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/TempFileTextBody.java
URL:
http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/TempFileTextBody.java?rev=678383&r1=678382&r2=678383&view=diff
==============================================================================
---
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/TempFileTextBody.java
(original)
+++
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/TempFileTextBody.java
Mon Jul 21 03:20:00 2008
@@ -28,8 +28,11 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.james.mime4j.decoder.Base64InputStream;
+import org.apache.james.mime4j.decoder.QuotedPrintableInputStream;
import org.apache.james.mime4j.util.CharsetUtil;
import org.apache.james.mime4j.util.CodecUtil;
+import org.apache.james.mime4j.util.MimeUtil;
import org.apache.james.mime4j.util.TempFile;
import org.apache.james.mime4j.util.TempPath;
import org.apache.james.mime4j.util.TempStorage;
@@ -46,21 +49,30 @@
private String mimeCharset = null;
private TempFile tempFile = null;
+ private final String transferEncoding;
public TempFileTextBody(InputStream is) throws IOException {
- this(is, null);
+ this(is, null, null);
}
- public TempFileTextBody(InputStream is, String mimeCharset)
- throws IOException {
+ public TempFileTextBody(final InputStream is, final String mimeCharset,
+ final String transferEncoding) throws IOException {
this.mimeCharset = mimeCharset;
-
+ this.transferEncoding = transferEncoding;
TempPath tempPath = TempStorage.getInstance().getRootTempPath();
tempFile = tempPath.createTempFile("attachment", ".txt");
OutputStream out = tempFile.getOutputStream();
- CodecUtil.copy(is, out);
+ final InputStream decodedStream;
+ if (MimeUtil.ENC_BASE64.equals(transferEncoding)) {
+ decodedStream = new Base64InputStream(is);
+ } else if (MimeUtil.ENC_QUOTED_PRINTABLE.equals(transferEncoding)) {
+ decodedStream = new QuotedPrintableInputStream(is);
+ } else {
+ decodedStream = is;
+ }
+ CodecUtil.copy(decodedStream, out);
out.close();
}
@@ -110,6 +122,15 @@
* @see org.apache.james.mime4j.message.Body#writeTo(java.io.OutputStream,
int)
*/
public void writeTo(OutputStream out, int mode) throws IOException {
- CodecUtil.copy(tempFile.getInputStream(), out);
+ final InputStream inputStream = tempFile.getInputStream();
+ if (MimeUtil.ENC_BASE64.equals(transferEncoding)) {
+ CodecUtil.encodeBase64(inputStream, out);
+ out.write(CodecUtil.CRLF_CRLF);
+ } else if (MimeUtil.ENC_QUOTED_PRINTABLE.equals(transferEncoding)) {
+ CodecUtil.encodeQuotedPrintableBinary(inputStream,out);
+ out.write(CodecUtil.CRLF_CRLF);
+ } else {
+ CodecUtil.copy(inputStream,out);
+ }
}
}
Added: james/mime4j/trunk/src/test/resources/testmsgs/qp-body.msg
URL:
http://svn.apache.org/viewvc/james/mime4j/trunk/src/test/resources/testmsgs/qp-body.msg?rev=678383&view=auto
==============================================================================
--- james/mime4j/trunk/src/test/resources/testmsgs/qp-body.msg (added)
+++ james/mime4j/trunk/src/test/resources/testmsgs/qp-body.msg Mon Jul 21
03:20:00 2008
@@ -0,0 +1,6 @@
+Mime-Version: 1.0
+Subject: subject
+Content-Type: text/plain; charset="iso-8859-15"
+Content-Transfer-Encoding: quoted-printable
+
+7bit content with euro =A4 symbol=20
Added: james/mime4j/trunk/src/test/resources/testmsgs/qp-body.xml
URL:
http://svn.apache.org/viewvc/james/mime4j/trunk/src/test/resources/testmsgs/qp-body.xml?rev=678383&view=auto
==============================================================================
--- james/mime4j/trunk/src/test/resources/testmsgs/qp-body.xml (added)
+++ james/mime4j/trunk/src/test/resources/testmsgs/qp-body.xml Mon Jul 21
03:20:00 2008
@@ -0,0 +1,15 @@
+<message>
+<header>
+<field>
+Mime-Version: 1.0</field>
+<field>
+Subject: subject</field>
+<field>
+Content-Type: text/plain; charset="iso-8859-15"</field>
+<field>
+Content-Transfer-Encoding: quoted-printable</field>
+</header>
+<body>
+7bit content with euro =A4 symbol=20
+</body>
+</message>
Added: james/mime4j/trunk/src/test/resources/testmsgs/qp-body_decoded.xml
URL:
http://svn.apache.org/viewvc/james/mime4j/trunk/src/test/resources/testmsgs/qp-body_decoded.xml?rev=678383&view=auto
==============================================================================
--- james/mime4j/trunk/src/test/resources/testmsgs/qp-body_decoded.xml (added)
+++ james/mime4j/trunk/src/test/resources/testmsgs/qp-body_decoded.xml Mon Jul
21 03:20:00 2008
@@ -0,0 +1,13 @@
+<message>
+<header>
+<field>
+Mime-Version: 1.0</field>
+<field>
+Subject: subject</field>
+<field>
+Content-Type: text/plain; charset="iso-8859-15"</field>
+<field>
+Content-Transfer-Encoding: quoted-printable</field>
+</header>
+<text-body name="qp-body_decoded_1.txt"/>
+</message>
Added: james/mime4j/trunk/src/test/resources/testmsgs/qp-body_decoded_1.txt
URL:
http://svn.apache.org/viewvc/james/mime4j/trunk/src/test/resources/testmsgs/qp-body_decoded_1.txt?rev=678383&view=auto
==============================================================================
--- james/mime4j/trunk/src/test/resources/testmsgs/qp-body_decoded_1.txt (added)
+++ james/mime4j/trunk/src/test/resources/testmsgs/qp-body_decoded_1.txt Mon
Jul 21 03:20:00 2008
@@ -0,0 +1 @@
+7bit content with euro ยค symbol
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]