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