Skip to content

Commit 50ef109

Browse files
committed
POC RFC-6532 Support for i8n emails
1 parent 7eff66d commit 50ef109

File tree

2 files changed

+70
-0
lines changed

2 files changed

+70
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
MIME-Version: 1.0
2+
Subject: Test
3+
From: Benoit TELLIER <[email protected]>
4+
To: Benoit TELLIER <[email protected]>
5+
Date: Tue, 13 Feb 2024 23:01:18 +0000
6+
Message-ID: <[email protected]>
7+
Content-Type: multipart/mixed;
8+
boundary="-=Part.17f.732e3d28e1c76db4.18da4b40791.62ef5e3fa995057d=-"
9+
10+
---=Part.17f.732e3d28e1c76db4.18da4b40791.62ef5e3fa995057d=-
11+
Content-Type: multipart/alternative;
12+
boundary="-=Part.17e.48ac92d73c356567.18da4b40791.360a293e2f389efe=-"
13+
14+
---=Part.17e.48ac92d73c356567.18da4b40791.360a293e2f389efe=-
15+
Content-Type: text/plain; charset=UTF-8
16+
Content-Transfer-Encoding: quoted-printable
17+
18+
Test
19+
20+
---=Part.17e.48ac92d73c356567.18da4b40791.360a293e2f389efe=-
21+
Content-Type: text/html; charset=UTF-8
22+
Content-Transfer-Encoding: quoted-printable
23+
24+
<div>Test<br><br></div>
25+
26+
---=Part.17e.48ac92d73c356567.18da4b40791.360a293e2f389efe=---
27+
28+
---=Part.17f.732e3d28e1c76db4.18da4b40791.62ef5e3fa995057d=-
29+
Content-Type: application/json; name="=?US-ASCII?Q?id=5Frsa.txt?="
30+
Content-Disposition: attachment
31+
Content-Transfer-Encoding: base64
32+
33+
c3NoLXJzYSBBQUFBQjNOemFDMXljMkVBQUFBREFRQUJBQUFDQVFDa0dXMkp5c2lKR2hQZXdBOXRr
34+
bVFFQm5EVjRaQ0llLy92ZFoyV0RybnZiNlZLQzdpWldjODFpU1ZkTFcxUkRBTll4c3ExN0dQanpV
35+
OFlWdk9sRkFJSk1WTm9ESWhuQWtYOU9VUUJpd1hpOHlHZ3FLNGR0RmIxczJBRzNrQmxNUFFJOE5K
36+
MkpLT2Z5MW51VnJubEtoVDlCVnpYMm5iSjNOak9PZlkxQlJEaDZZcVl1a2RuejBUT2k1Rkp1YUJT
37+
NDZQemx3eWdIa0dzeXBLVHM2Y2FUNjBRdjl3eWFadm4yenN1RmNML3o2Mmd3aGZyZGFsakF1UGRX
38+
cERlNG1IRVFmMXA2SXNRMDdPb0lwTmRHQ0tLZHRZQlVTcktzTXRpMllLUGZpSzB2WGU1L3owRWJE
39+
VlRja1BrY3NwQ2cwYVZuZTB2eFVsRGt2U2pwV2tiQkZ0YTk5ekJjOVlJL0ROK28vRmtONlFTdXV5
40+
U29tNDZkamZpUjdqSzNMRmJKUkhaem9BblNvaTZvRlR0MW1LWjNzam44bnZWUG1PV3pJWHY0Tm1O
41+
R1ExZHFrV1hXcUtyQjlIZUZiQnRPWVAzaEkxQ0kvaVhNbVR1SkdvcHVTUmlTNW1QZXlSQWV6VGtk
42+
UG8vZ2NSVWNzbklhVW1EallUWHBFNzU3Yk5LWVNHbFJsS3FrbEhKc2JveEdTK0NaVzBJS2dZeTdG
43+
cmZRZ1FGMTdvaUpWM1JJQ1VHcU9rM1I2VnZOYlhlL2VmZS9IT24xd0lZUS9qVGRzY0hCamRIM2FF
44+
MmY4Y3dVS1IzNUtWNlJ1SE4vYVpiekxiVkJxUEMvUTcwd3NMQlloV29Da1dRMElUUmxGV2N3bnN3
45+
VTE5NnlGWkVHSmthOUNEaHZQdUVBV0NLWnFRT3gyMnRoYWVSQlE9PSBiZW53YUBob3Jpem9uCg==

server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.junit.jupiter.api.io.TempDir;
4444

4545
class AddDeliveredToHeaderTest {
46+
public static final String RECIPIENT2 = "rené@" + DEFAULT_DOMAIN;
4647
@RegisterExtension
4748
public TestIMAPClient testIMAPClient = new TestIMAPClient();
4849
@RegisterExtension
@@ -58,6 +59,7 @@ void setup(@TempDir File temporaryFolder) throws Exception {
5859
DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
5960
dataProbe.addDomain(DEFAULT_DOMAIN);
6061
dataProbe.addUser(RECIPIENT, PASSWORD);
62+
dataProbe.addUser(RECIPIENT2, PASSWORD);
6163
dataProbe.addUser(FROM, PASSWORD);
6264
}
6365

@@ -79,4 +81,27 @@ void receivedMessagesShouldContainDeliveredToHeaders() throws Exception {
7981
assertThat(testIMAPClient.readFirstMessageHeaders())
8082
.contains(AddDeliveredToHeader.DELIVERED_TO + ": " + RECIPIENT);
8183
}
84+
85+
@Test
86+
void receivedMessagesShouldContainDeliveredToHeadersI8N() throws Exception {
87+
String message = "FROM: " + RECIPIENT2 + "\r\n" +
88+
"subject: testé\r\n" +
89+
"Content-Type: text/plain; charset=UTF-8\r\n" +
90+
"Content-Encoding: 8bit\r\n" +
91+
"\r\n" +
92+
"contenté\r\n" +
93+
".\r\n";
94+
messageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort())
95+
.authenticate(FROM, PASSWORD)
96+
.sendMessageWithHeaders(FROM, RECIPIENT2, message);
97+
98+
testIMAPClient.connect(LOCALHOST_IP, jamesServer.getProbe(ImapGuiceProbe.class).getImapPort())
99+
.login(RECIPIENT2, PASSWORD)
100+
.select(TestIMAPClient.INBOX)
101+
.awaitMessage(awaitAtMostOneMinute);
102+
assertThat(testIMAPClient.readFirstMessageHeaders())
103+
.contains("René")
104+
.contains("testé")
105+
.contains("contenté");
106+
}
82107
}

0 commit comments

Comments
 (0)