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 ro...@apache.org on 2016/08/26 08:11:23 UTC
[1/2] james-project git commit: JAMES-1819 Add
ContentTransferEncoding when converting a message from JMAP to Mime
Repository: james-project
Updated Branches:
refs/heads/master 240bed003 -> 6d30e8db7
JAMES-1819 Add ContentTransferEncoding when converting a message from JMAP to Mime
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/e55bd9c6
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/e55bd9c6
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/e55bd9c6
Branch: refs/heads/master
Commit: e55bd9c6e1abe58b4ced60934e30a12ce8ac9d2f
Parents: f91fc65
Author: Antoine Duprat <ad...@linagora.com>
Authored: Wed Aug 24 09:10:48 2016 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Fri Aug 26 08:45:38 2016 +0200
----------------------------------------------------------------------
.../jmap/methods/MIMEMessageConverter.java | 9 ++-
.../jmap/methods/MIMEMessageConverterTest.java | 74 ++++++++++++++++----
.../james/jmap/model/CreationMessageTest.java | 14 +++-
3 files changed, 81 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/e55bd9c6/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/MIMEMessageConverter.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/MIMEMessageConverter.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/MIMEMessageConverter.java
index f598d98..b802276 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/MIMEMessageConverter.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/MIMEMessageConverter.java
@@ -75,6 +75,8 @@ public class MIMEMessageConverter {
private static final String ALTERNATIVE_SUB_TYPE = "alternative";
private static final String MIXED_SUB_TYPE = "mixed";
private static final String FIELD_PARAMETERS_SEPARATOR = ";";
+ private static final String QUOTED_PRINTABLE = "quoted-printable";
+ private static final String BASE64 = "base64";
private final BasicBodyFactory bodyFactory;
@@ -103,7 +105,8 @@ public class MIMEMessageConverter {
if (isMultipart(creationMessageEntry.getValue(), messageAttachments)) {
messageBuilder.setBody(createMultipart(creationMessageEntry.getValue(), messageAttachments));
} else {
- messageBuilder.setBody(createTextBody(creationMessageEntry.getValue()));
+ messageBuilder.setBody(createTextBody(creationMessageEntry.getValue()))
+ .setContentTransferEncoding(QUOTED_PRINTABLE);
}
buildMimeHeaders(messageBuilder, creationMessageEntry.getCreationId(), creationMessageEntry.getValue(), messageAttachments);
return messageBuilder.build();
@@ -209,6 +212,7 @@ public class MIMEMessageConverter {
.use(bodyFactory)
.setBody(textBody.get(), Charsets.UTF_8)
.setContentType(PLAIN_TEXT_MEDIA_TYPE, UTF_8_CHARSET)
+ .setContentTransferEncoding(QUOTED_PRINTABLE)
.build());
}
}
@@ -219,6 +223,7 @@ public class MIMEMessageConverter {
.use(bodyFactory)
.setBody(htmlBody.get(), Charsets.UTF_8)
.setContentType(HTML_MEDIA_TYPE, UTF_8_CHARSET)
+ .setContentTransferEncoding(QUOTED_PRINTABLE)
.build());
}
}
@@ -240,7 +245,7 @@ public class MIMEMessageConverter {
.setBody(new BasicBodyFactory().binaryBody(ByteStreams.toByteArray(att.getAttachment().getStream())))
.setField(contentTypeField(att))
.setField(contentDispositionField(att.isInline()))
- .setContentTransferEncoding("base64");
+ .setContentTransferEncoding(BASE64);
contentId(builder, att);
return builder.build();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/e55bd9c6/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/MIMEMessageConverterTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/MIMEMessageConverterTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/MIMEMessageConverterTest.java
index b898aff..3bbe36c 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/MIMEMessageConverterTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/MIMEMessageConverterTest.java
@@ -105,7 +105,7 @@ public class MIMEMessageConverterTest {
ZonedDateTime messageDate = ZonedDateTime.ofInstant(now, ZoneId.systemDefault());
CreationMessage testMessage = CreationMessage.builder()
- .mailboxIds(ImmutableList.of("dead-bada55"))
+ .mailboxId("dead-bada55")
.subject("subject")
.from(DraftEmailer.builder().name("sender").build())
.date(messageDate)
@@ -120,13 +120,36 @@ public class MIMEMessageConverterTest {
}
@Test
+ public void convertToMimeShouldSetQuotedPrintableContentTransferEncodingWhenText() {
+ // Given
+ MIMEMessageConverter sut = new MIMEMessageConverter();
+
+ CreationMessage testMessage = CreationMessage.builder()
+ .mailboxId("dead-bada55")
+ .subject("subject")
+ .from(DraftEmailer.builder().name("sender").build())
+ .htmlBody("Hello <b>all</b>!")
+ .build();
+
+ // When
+ Message result = sut.convertToMime(new ValueWithId.CreationMessageEntry(
+ CreationMessageId.of("user|mailbox|1"), testMessage), ImmutableList.of());
+
+ // Then
+ assertThat(result.getHeader()
+ .getField("Content-Transfer-Encoding")
+ .getBody())
+ .isEqualTo("quoted-printable");
+ }
+
+ @Test
public void convertToMimeShouldSetTextBodyWhenProvided() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
TextBody expected = new BasicBodyFactory().textBody("Hello all!", Charsets.UTF_8);
CreationMessage testMessage = CreationMessage.builder()
- .mailboxIds(ImmutableList.of("dead-bada55"))
+ .mailboxId("dead-bada55")
.subject("subject")
.from(DraftEmailer.builder().name("sender").build())
.textBody("Hello all!")
@@ -147,7 +170,7 @@ public class MIMEMessageConverterTest {
TextBody expected = new BasicBodyFactory().textBody("", Charsets.UTF_8);
CreationMessage testMessage = CreationMessage.builder()
- .mailboxIds(ImmutableList.of("dead-bada55"))
+ .mailboxId("dead-bada55")
.subject("subject")
.from(DraftEmailer.builder().name("sender").build())
.build();
@@ -167,7 +190,7 @@ public class MIMEMessageConverterTest {
TextBody expected = new BasicBodyFactory().textBody("Hello <b>all</b>!", Charsets.UTF_8);
CreationMessage testMessage = CreationMessage.builder()
- .mailboxIds(ImmutableList.of("dead-bada55"))
+ .mailboxId("dead-bada55")
.subject("subject")
.from(DraftEmailer.builder().name("sender").build())
.htmlBody("Hello <b>all</b>!")
@@ -187,7 +210,7 @@ public class MIMEMessageConverterTest {
MIMEMessageConverter sut = new MIMEMessageConverter();
CreationMessage testMessage = CreationMessage.builder()
- .mailboxIds(ImmutableList.of("dead-bada55"))
+ .mailboxId("dead-bada55")
.subject("subject")
.from(DraftEmailer.builder().name("sender").build())
.textBody("Hello all!")
@@ -212,7 +235,7 @@ public class MIMEMessageConverterTest {
MIMEMessageConverter sut = new MIMEMessageConverter();
CreationMessage testMessage = CreationMessage.builder()
- .mailboxIds(ImmutableList.of("dead-bada55"))
+ .mailboxId("dead-bada55")
.subject("subject")
.from(DraftEmailer.builder().name("sender").build())
.textBody("Hello all!")
@@ -223,9 +246,11 @@ public class MIMEMessageConverterTest {
"Content-Type: multipart/alternative;\r\n" +
" boundary=\"-=Part.1.";
String expectedPart1 = "Content-Type: text/plain; charset=UTF-8\r\n" +
+ "Content-Transfer-Encoding: quoted-printable\r\n" +
"\r\n" +
"Hello all!\r\n";
String expectedPart2 = "Content-Type: text/html; charset=UTF-8\r\n" +
+ "Content-Transfer-Encoding: quoted-printable\r\n" +
"\r\n" +
"Hello <b>all</b>!\r\n";
@@ -246,7 +271,7 @@ public class MIMEMessageConverterTest {
MIMEMessageConverter sut = new MIMEMessageConverter();
CreationMessage testMessage = CreationMessage.builder()
- .mailboxIds(ImmutableList.of("dead-bada55"))
+ .mailboxId("dead-bada55")
.subject("subject")
.from(DraftEmailer.builder().name("sender").build())
.textBody("Hello all!")
@@ -266,7 +291,7 @@ public class MIMEMessageConverterTest {
MIMEMessageConverter sut = new MIMEMessageConverter();
CreationMessage testMessage = CreationMessage.builder()
- .mailboxIds(ImmutableList.of("dead-bada55"))
+ .mailboxId("dead-bada55")
.subject("subject")
.from(DraftEmailer.builder().name("sender").build())
.htmlBody("Hello <b>all<b>!")
@@ -287,7 +312,7 @@ public class MIMEMessageConverterTest {
TextBody expected = new BasicBodyFactory().textBody("", Charsets.UTF_8);
CreationMessage testMessage = CreationMessage.builder()
- .mailboxIds(ImmutableList.of("dead-bada55"))
+ .mailboxId("dead-bada55")
.subject("subject")
.from(DraftEmailer.builder().name("sender").build())
.htmlBody("")
@@ -309,7 +334,7 @@ public class MIMEMessageConverterTest {
TextBody expected = new BasicBodyFactory().textBody("", Charsets.UTF_8);
CreationMessage testMessage = CreationMessage.builder()
- .mailboxIds(ImmutableList.of("dead-bada55"))
+ .mailboxId("dead-bada55")
.subject("subject")
.from(DraftEmailer.builder().name("sender").build())
.textBody("")
@@ -330,7 +355,7 @@ public class MIMEMessageConverterTest {
MIMEMessageConverter sut = new MIMEMessageConverter();
CreationMessage testMessage = CreationMessage.builder()
- .mailboxIds(ImmutableList.of("dead-bada55"))
+ .mailboxId("dead-bada55")
.subject("subject")
.from(DraftEmailer.builder().name("sender").build())
.htmlBody("Hello <b>all<b>!")
@@ -364,6 +389,7 @@ public class MIMEMessageConverterTest {
assertThat(attachmentPart.getDispositionType()).isEqualTo("inline");
assertThat(attachmentPart.getMimeType()).isEqualTo(expectedMimeType);
assertThat(attachmentPart.getHeader().getField("Content-ID").getBody()).isEqualTo(expectedCID);
+ assertThat(attachmentPart.getContentTransferEncoding()).isEqualTo("base64");
}
@Test
@@ -372,7 +398,7 @@ public class MIMEMessageConverterTest {
MIMEMessageConverter sut = new MIMEMessageConverter();
CreationMessage testMessage = CreationMessage.builder()
- .mailboxIds(ImmutableList.of("dead-bada55"))
+ .mailboxId("dead-bada55")
.subject("subject")
.from(DraftEmailer.builder().name("sender").build())
.textBody("Hello all!")
@@ -420,4 +446,28 @@ public class MIMEMessageConverterTest {
assertThat(attachmentPart.getMimeType()).isEqualTo(expectedMimeType);
assertThat(attachmentPart.getHeader().getField("Content-ID").getBody()).isEqualTo(expectedCID);
}
+
+ @Test
+ public void convertShouldEncodeWhenNonASCIICharacters() {
+ // Given
+ MIMEMessageConverter sut = new MIMEMessageConverter();
+
+ CreationMessage testMessage = CreationMessage.builder()
+ .mailboxId("dead-bada55")
+ .subject("subject")
+ .from(DraftEmailer.builder().name("sender").build())
+ .htmlBody("Some non-ASCII characters: �����")
+ .build();
+
+ // When
+ ImmutableList<MessageAttachment> attachments = ImmutableList.of();
+ byte[] convert = sut.convert(new ValueWithId.CreationMessageEntry(
+ CreationMessageId.of("user|mailbox|1"), testMessage), attachments);
+
+ String expectedEncodedContent = "Some non-ASCII characters: =C3=A1=C3=84=C3=8E=C3=9F=C3=BF";
+
+ // Then
+ String actual = new String(convert, Charsets.US_ASCII);
+ assertThat(actual).contains(expectedEncodedContent);
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/e55bd9c6/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/CreationMessageTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/CreationMessageTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/CreationMessageTest.java
index a72647f..e7762aa 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/CreationMessageTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/CreationMessageTest.java
@@ -19,11 +19,11 @@
package org.apache.james.jmap.model;
-import static org.apache.james.jmap.model.CreationMessage.DraftEmailer;
-import static org.apache.james.jmap.model.MessageProperties.MessageProperty;
import static org.assertj.core.api.Assertions.assertThat;
import org.apache.james.jmap.methods.ValidationResult;
+import org.apache.james.jmap.model.CreationMessage.DraftEmailer;
+import org.apache.james.jmap.model.MessageProperties.MessageProperty;
import org.junit.Before;
import org.junit.Test;
@@ -134,4 +134,14 @@ public class CreationMessageTest {
assertThat(sut.validate()).isEmpty();
}
+ @Test
+ public void mailboxIdShouldSetASingletonList() {
+ String mailboxId = "123";
+ CreationMessage message = CreationMessage.builder()
+ .headers(ImmutableMap.of())
+ .mailboxId(mailboxId)
+ .build();
+
+ assertThat(message.getMailboxIds()).containsExactly(mailboxId);
+ }
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[2/2] james-project git commit: Merge remote-tracking branch
'aduprat/JAMES-1819'
Posted by ro...@apache.org.
Merge remote-tracking branch 'aduprat/JAMES-1819'
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/6d30e8db
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/6d30e8db
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/6d30e8db
Branch: refs/heads/master
Commit: 6d30e8db74249accc4eefe890d391c95577afb3a
Parents: 240bed0 e55bd9c
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Fri Aug 26 10:10:05 2016 +0200
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Fri Aug 26 10:10:05 2016 +0200
----------------------------------------------------------------------
.../jmap/methods/MIMEMessageConverter.java | 9 ++-
.../jmap/methods/MIMEMessageConverterTest.java | 74 ++++++++++++++++----
.../james/jmap/model/CreationMessageTest.java | 14 +++-
3 files changed, 81 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org