This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit 5f5ac0f5e6a8bc67b40ce3a793197befb8a615c9 Author: jcouteau <couteau@codelutin.com> Date: Thu Aug 22 09:55:30 2019 +0200 fixex #10484 : Problème de décodage de sujet d'email --- .../faxtomail/services/FaxToMailServiceUtils.java | 24 +++++++++++++++++++--- .../services/FaxToMailServiceUtilsTest.java | 3 +++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java index cd72cceb..328f41c0 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java @@ -163,9 +163,27 @@ public class FaxToMailServiceUtils { public static String getDecodedSubject(String subject) throws UnsupportedEncodingException { Preconditions.checkNotNull(subject); - if (subject.startsWith("=?iso-")) { - subject = subject.replaceAll(" ", "=20"); - subject = MimeUtility.decodeText(subject); + Pattern pattern=Pattern.compile("=\\?([^?]+)\\?([^?]+)\\?([^?]+)\\?="); + Matcher m=pattern.matcher(subject); + + ArrayList<String> encodedParts=new ArrayList<>(); + + while(m.find()){ + encodedParts.add(m.group(0)); + } + + if(encodedParts.size()>0){ + try { + for(String encoded:encodedParts) { + String correctlyEncoded = encoded; + if (correctlyEncoded.startsWith("=?iso-")) { + correctlyEncoded = correctlyEncoded.replaceAll(" ", "=20"); + } + subject=subject.replace(encoded, MimeUtility.decodeText(correctlyEncoded)); + } + } catch(Exception ex) { + log.info("Error decoding subject : ", ex); + } } return subject; diff --git a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtilsTest.java b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtilsTest.java index 9fdfff13..26a457f8 100644 --- a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtilsTest.java +++ b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtilsTest.java @@ -60,6 +60,9 @@ public class FaxToMailServiceUtilsTest { subject = "Un fax de 1 page(s) a été reçu"; Assert.assertEquals("Un fax de 1 page(s) a été reçu", FaxToMailServiceUtils.getDecodedSubject(subject)); + subject = "Auto: Accusé de réception de votre=?Cp1252?Q?_commande_=E0_France_Fermetures?="; + Assert.assertEquals("Auto: Accusé de réception de votre commande à France Fermetures", FaxToMailServiceUtils.getDecodedSubject(subject)); + } catch (Exception e) { Assert.fail(e.getMessage()); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.