You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2007/02/23 12:44:01 UTC
svn commit: r510915 - in /james/mime4j/trunk/src/main/java/org/mime4j:
message/BodyPart.java message/Header.java message/Message.java
message/Multipart.java util/CharsetUtil.java
Author: norman
Date: Fri Feb 23 03:44:00 2007
New Revision: 510915
URL: http://svn.apache.org/viewvc?view=rev&rev=510915
Log:
Get sure we use the right charset for while writing to the OutputStream
Modified:
james/mime4j/trunk/src/main/java/org/mime4j/message/BodyPart.java
james/mime4j/trunk/src/main/java/org/mime4j/message/Header.java
james/mime4j/trunk/src/main/java/org/mime4j/message/Message.java
james/mime4j/trunk/src/main/java/org/mime4j/message/Multipart.java
james/mime4j/trunk/src/main/java/org/mime4j/util/CharsetUtil.java
Modified: james/mime4j/trunk/src/main/java/org/mime4j/message/BodyPart.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/mime4j/message/BodyPart.java?view=diff&rev=510915&r1=510914&r2=510915
==============================================================================
--- james/mime4j/trunk/src/main/java/org/mime4j/message/BodyPart.java (original)
+++ james/mime4j/trunk/src/main/java/org/mime4j/message/BodyPart.java Fri Feb 23 03:44:00 2007
@@ -22,6 +22,7 @@
import java.io.IOException;
import java.io.OutputStream;
+
/**
* Represents a MIME body part (see RFC 2045).
*
@@ -35,12 +36,7 @@
* @see org.mime4j.message.Entity#writeTo(java.io.OutputStream)
*/
public void writeTo(OutputStream out) throws IOException {
- String header = getHeader().toString();
- if (header.equals("") == false) {
-
- out.write((header + "\r\n").getBytes());
- }
-
+ getHeader().writeTo(out);
getBody().writeTo(out);
}
}
Modified: james/mime4j/trunk/src/main/java/org/mime4j/message/Header.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/mime4j/message/Header.java?view=diff&rev=510915&r1=510914&r2=510915
==============================================================================
--- james/mime4j/trunk/src/main/java/org/mime4j/message/Header.java (original)
+++ james/mime4j/trunk/src/main/java/org/mime4j/message/Header.java Fri Feb 23 03:44:00 2007
@@ -19,8 +19,11 @@
package org.mime4j.message;
+import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
@@ -29,7 +32,9 @@
import org.mime4j.AbstractContentHandler;
import org.mime4j.MimeStreamParser;
+import org.mime4j.field.ContentTypeField;
import org.mime4j.field.Field;
+import org.mime4j.util.CharsetUtil;
/**
@@ -130,6 +135,22 @@
str.append("\r\n");
}
return str.toString();
+ }
+
+
+ /**
+ * Write the Header to the given outputStream
+ *
+ * @param out
+ * @throws IOException
+ */
+ public void writeTo(OutputStream out) throws IOException {
+ String charString = ((ContentTypeField) getField(Field.CONTENT_TYPE)).getCharset();
+
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, CharsetUtil.getCharset(charString)),8192);
+ writer.append(toString()+ "\r\n");
+ writer.flush();
+ writer.close();
}
}
Modified: james/mime4j/trunk/src/main/java/org/mime4j/message/Message.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/mime4j/message/Message.java?view=diff&rev=510915&r1=510914&r2=510915
==============================================================================
--- james/mime4j/trunk/src/main/java/org/mime4j/message/Message.java (original)
+++ james/mime4j/trunk/src/main/java/org/mime4j/message/Message.java Fri Feb 23 03:44:00 2007
@@ -83,8 +83,7 @@
* @see org.mime4j.message.Entity#writeTo(java.io.OutputStream)
*/
public void writeTo(OutputStream out) throws IOException {
- String header = getHeader().toString();
- out.write((header + "\r\n").getBytes());
+ getHeader().writeTo(out);
Body body = getBody();
if (body instanceof Multipart) {
Modified: james/mime4j/trunk/src/main/java/org/mime4j/message/Multipart.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/mime4j/message/Multipart.java?view=diff&rev=510915&r1=510914&r2=510915
==============================================================================
--- james/mime4j/trunk/src/main/java/org/mime4j/message/Multipart.java (original)
+++ james/mime4j/trunk/src/main/java/org/mime4j/message/Multipart.java Fri Feb 23 03:44:00 2007
@@ -19,8 +19,10 @@
package org.mime4j.message;
+import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
+import java.io.OutputStreamWriter;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
@@ -28,6 +30,7 @@
import org.mime4j.field.ContentTypeField;
import org.mime4j.field.Field;
+import org.mime4j.util.CharsetUtil;
/**
* Represents a MIME multipart body (see RFC 2045).A multipart body has a
@@ -166,15 +169,17 @@
String boundary = getBoundary();
List bodyParts = getBodyParts();
- out.write((getPreamble() + "\r\n").getBytes());
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, CharsetUtil.getCharset(getCharset())),8192);
+
+ writer.append(getPreamble() + "\r\n");
for (int i = 0; i < bodyParts.size(); i++) {
- out.write((boundary + "\r\n").getBytes());
+ writer.append(boundary + "\r\n");
((BodyPart) bodyParts.get(i)).writeTo(out);
}
- out.write((getEpilogue() + "\r\n").getBytes());
- out.write((boundary + "--" + "\r\n").getBytes());
+ writer.append(getEpilogue() + "\r\n");
+ writer.append(boundary + "--" + "\r\n");
}
@@ -188,5 +193,11 @@
ContentTypeField cField = (ContentTypeField) e.getHeader().getField(
Field.CONTENT_TYPE);
return cField.getBoundary();
+ }
+
+ private String getCharset() {
+ Entity e = getParent();
+ String charString = ((ContentTypeField) e.getHeader().getField(Field.CONTENT_TYPE)).getCharset();
+ return charString;
}
}
Modified: james/mime4j/trunk/src/main/java/org/mime4j/util/CharsetUtil.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/mime4j/util/CharsetUtil.java?view=diff&rev=510915&r1=510914&r2=510915
==============================================================================
--- james/mime4j/trunk/src/main/java/org/mime4j/util/CharsetUtil.java (original)
+++ james/mime4j/trunk/src/main/java/org/mime4j/util/CharsetUtil.java Fri Feb 23 03:44:00 2007
@@ -1118,6 +1118,17 @@
return null;
}
+ public static java.nio.charset.Charset getCharset(String charsetName) {
+ java.nio.charset.Charset c = java.nio.charset.Charset.forName(charsetName);
+
+ if (c == null) {
+ //TODO: Check what touse as default
+ c = java.nio.charset.Charset.forName("ISO8859-1");
+
+ }
+ return c;
+
+ }
/*
* Uncomment the code below and run the main method to regenerate the
* Javadoc table above when the known charsets change.
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org