You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by si...@apache.org on 2016/07/29 05:33:18 UTC
camel git commit: CAMEL-10200: Mail consumer sets wrong Content-Type
header for mails with attachment
Repository: camel
Updated Branches:
refs/heads/master 1e52c44c0 -> f7b152a77
CAMEL-10200: Mail consumer sets wrong Content-Type header for mails with attachment
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/f7b152a7
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/f7b152a7
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/f7b152a7
Branch: refs/heads/master
Commit: f7b152a77b9fd02c46e1eeb83e22e510a2fcdb51
Parents: 1e52c44
Author: Stephan Siano <st...@sap.com>
Authored: Thu Jul 28 21:04:11 2016 +0200
Committer: Stephan Siano <st...@sap.com>
Committed: Fri Jul 29 07:31:51 2016 +0200
----------------------------------------------------------------------
.../camel/component/mail/MailBinding.java | 20 ++++++++++++++++++--
.../camel/component/mail/MailMessage.java | 3 +++
.../component/mail/MimeMessageConsumeTest.java | 3 ++-
3 files changed, 23 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/f7b152a7/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java
index 0596d61..fccca6a 100644
--- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java
+++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java
@@ -26,6 +26,8 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.TreeMap;
+
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.mail.Address;
@@ -593,8 +595,8 @@ public class MailBinding {
return true;
}
- protected Map<String, Object> extractHeadersFromMail(Message mailMessage, Exchange exchange) throws MessagingException {
- Map<String, Object> answer = new HashMap<String, Object>();
+ protected Map<String, Object> extractHeadersFromMail(Message mailMessage, Exchange exchange) throws MessagingException, IOException {
+ Map<String, Object> answer = new TreeMap<String, Object>(String.CASE_INSENSITIVE_ORDER);
Enumeration<?> names = mailMessage.getAllHeaders();
while (names.hasMoreElements()) {
@@ -604,6 +606,20 @@ public class MailBinding {
CollectionHelper.appendValue(answer, header.getName(), value);
}
}
+ // if the message is a multipart message, do not set the content type to multipart/*
+ if (((MailEndpoint)exchange.getFromEndpoint()).getConfiguration().isMapMailMessage()) {
+ Object content = mailMessage.getContent();
+ if (content instanceof MimeMultipart) {
+ MimeMultipart multipart = (MimeMultipart)content;
+ int size = multipart.getCount();
+ for (int i = 0; i < size; i++) {
+ BodyPart part = multipart.getBodyPart(i);
+ if (part.getContentType().toLowerCase().startsWith("text")) {
+ answer.put(Exchange.CONTENT_TYPE, part.getContentType());
+ }
+ }
+ }
+ }
return answer;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/f7b152a7/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java
index 5e0615b..bd83a48 100644
--- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java
+++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.component.mail;
+import java.io.IOException;
import java.util.Map;
import javax.activation.DataHandler;
import javax.mail.Message;
@@ -116,6 +117,8 @@ public class MailMessage extends DefaultMessage {
}
} catch (MessagingException e) {
throw new RuntimeCamelException("Error accessing headers due to: " + e.getMessage(), e);
+ } catch (IOException e) {
+ throw new RuntimeCamelException("Error accessing headers due to: " + e.getMessage(), e);
}
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/f7b152a7/components/camel-mail/src/test/java/org/apache/camel/component/mail/MimeMessageConsumeTest.java
----------------------------------------------------------------------
diff --git a/components/camel-mail/src/test/java/org/apache/camel/component/mail/MimeMessageConsumeTest.java b/components/camel-mail/src/test/java/org/apache/camel/component/mail/MimeMessageConsumeTest.java
index 786f939..337e84e 100644
--- a/components/camel-mail/src/test/java/org/apache/camel/component/mail/MimeMessageConsumeTest.java
+++ b/components/camel-mail/src/test/java/org/apache/camel/component/mail/MimeMessageConsumeTest.java
@@ -135,7 +135,8 @@ public class MimeMessageConsumeTest extends CamelTestSupport {
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
- from("pop3://james3@localhost?consumer.delay=1000").convertBodyTo(String.class).to("mock:result");
+ from("pop3://james3@localhost?consumer.delay=1000").removeHeader("to").to("smtp://james4@localhost");
+ from("pop3://james4@localhost?consumer.delay=2000").convertBodyTo(String.class).to("mock:result");
}
};
}