Author: ningjiang
Date: Fri May 28 06:15:07 2010
New Revision: 949109
URL: http://svn.apache.org/viewvc?rev=949109&view=rev
Log:
CAMEL-2763 fixed NO_ASCII subject issue of MailBinding
Modified:
camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java
camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailRouteTest.java
Modified:
camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java?rev=949109&r1=949108&r2=949109&view=diff
==============================================================================
---
camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java
(original)
+++
camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java
Fri May 28 06:15:07 2010
@@ -42,6 +42,7 @@ import javax.mail.util.ByteArrayDataSour
import org.apache.camel.Exchange;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.converter.IOConverter;
import org.apache.camel.converter.ObjectConverter;
import org.apache.camel.impl.DefaultHeaderFilterStrategy;
import org.apache.camel.spi.HeaderFilterStrategy;
@@ -91,7 +92,7 @@ public class MailBinding {
// and headers the headers win.
String subject = endpoint.getConfiguration().getSubject();
if (subject != null) {
- mimeMessage.setHeader("Subject", subject);
+ mimeMessage.setSubject(subject,
IOConverter.getCharsetName(exchange));
}
// append the rest of the headers (no recipients) that could be
subject, reply-to etc.
@@ -323,7 +324,10 @@ public class MailBinding {
if (headerValue != null) {
if (headerFilterStrategy != null
&&
!headerFilterStrategy.applyFilterToCamelHeaders(headerName, headerValue,
exchange)) {
-
+ if (headerName.equalsIgnoreCase("subject")) {
+ mimeMessage.setSubject(asString(exchange,
headerValue), IOConverter.getCharsetName(exchange));
+ continue;
+ }
if (isRecipientHeader(headerName)) {
// skip any recipients as they are handled specially
continue;
Modified:
camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailRouteTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailRouteTest.java?rev=949109&r1=949108&r2=949109&view=diff
==============================================================================
---
camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailRouteTest.java
(original)
+++
camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailRouteTest.java
Fri May 28 06:15:07 2010
@@ -64,6 +64,36 @@ public class MailRouteTest extends Camel
assertMailboxReceivedMessages("route-test-c...@localhost");
}
+
+ @Test
+ public void testMailSubjectWithUnicode() throws Exception {
+ Mailbox.clearAll();
+
+ String body = "Hello Camel Riders!";
+ String subject = "My Camel \u2122";
+
+ System.setProperty(Exchange.DEFAULT_CHARSET_PROPERTY, "US-ASCII");
+
+ try {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+
+ mock.expectedMessageCount(1);
+ // now we don't use the UTF-8 encoding
+ mock.expectedHeaderReceived("subject",
"=?US-ASCII?Q?My_Camel_=3F?=");
+ mock.expectedBodiesReceived(body);
+
+ template.sendBodyAndHeader("direct:a", body, "subject", subject);
+
+ mock.assertIsSatisfied();
+
+ assertFalse("Should not have attachements",
+ mock.getExchanges().get(0).getIn().hasAttachments());
+ } finally {
+ System.clearProperty(Exchange.DEFAULT_CHARSET_PROPERTY);
+ }
+
+ }
+
protected void assertMailboxReceivedMessages(String name) throws
IOException, MessagingException {
Mailbox mailbox = Mailbox.get(name);