This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-mime4j.git

commit db19e21243101d51544a0acce0c079cfc552e9c8
Author: Benoit TELLIER <btell...@linagora.com>
AuthorDate: Fri Mar 1 10:26:03 2024 +0100

    MIME4J-326 SILENT monitor for header decoding
---
 .../java/org/apache/james/mime4j/stream/RawFieldParser.java  |  2 +-
 .../mime4j/field/address/LenientAddressBuilderTest.java      | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git 
a/core/src/main/java/org/apache/james/mime4j/stream/RawFieldParser.java 
b/core/src/main/java/org/apache/james/mime4j/stream/RawFieldParser.java
index e2c099dc..b546b302 100644
--- a/core/src/main/java/org/apache/james/mime4j/stream/RawFieldParser.java
+++ b/core/src/main/java/org/apache/james/mime4j/stream/RawFieldParser.java
@@ -440,7 +440,7 @@ public class RawFieldParser {
 
         String decoded = ContentUtil.decode(dstRaw);
         if (decoded.startsWith("=?")) {
-            decoded = DecoderUtil.decodeEncodedWords(decoded, 
DecodeMonitor.STRICT);
+            decoded = DecoderUtil.decodeEncodedWords(decoded, 
DecodeMonitor.SILENT);
         }
 
         dst.append(decoded);
diff --git 
a/dom/src/test/java/org/apache/james/mime4j/field/address/LenientAddressBuilderTest.java
 
b/dom/src/test/java/org/apache/james/mime4j/field/address/LenientAddressBuilderTest.java
index 0c622adf..78535802 100644
--- 
a/dom/src/test/java/org/apache/james/mime4j/field/address/LenientAddressBuilderTest.java
+++ 
b/dom/src/test/java/org/apache/james/mime4j/field/address/LenientAddressBuilderTest.java
@@ -108,6 +108,18 @@ public class LenientAddressBuilderTest {
         Assert.assertEquals("=?utf-8?Q?Dupont,_Gr=C3=A9goire", 
mailbox.getName());
     }
 
+    @Test
+    public void shouldTolerateMalformedEncoding() throws Exception {
+        String s = "\"=?windows-1251?B?onsonsmekqixrbahkinyv?=\" 
<atfi...@louisphaethon.co.ua>";
+        ByteSequence raw = ContentUtil.encode(s);
+        ParserCursor cursor = new ParserCursor(0, s.length());
+
+        Mailbox address = (Mailbox) parser.parseAddress(raw, cursor, 
RawFieldParser.INIT_BITSET(','));
+
+        Assert.assertEquals("atfi...@louisphaethon.co.ua", 
address.getAddress());
+        Assert.assertEquals("ў{(ћЙћ’Ё±\u00AD¶Ў’)т", address.getName());
+    }
+
     @Test
     public void testParseAddressTruncated() throws Exception {
         String s = "<  some  one  ";


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to