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 14be55cc7a7b9bb585e496808cd135ca09c0a6b6 Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 3 11:50:20 2016 +0100 - ajout du sujet dans l'email - correction des sujets mal formés refs #8053 Conflicts: faxtomail-persistence/src/main/resources/faxToMail.properties faxtomail-persistence/src/main/xmi/faxtomail.zargo --- .../src/main/resources/faxToMail.properties | 3 ++- .../faxtomail/services/FaxToMailServiceUtils.java | 14 ++++++++++++++ .../h2/V1_1_10_734__add_subject_field_to_email.sql | 2 ++ .../V1_1_10_734__add_subject_field_to_email.sql | 2 ++ .../faxtomail/services/service/EmailServiceTest.java | 14 ++++++++++++++ .../ui/swing/content/demande/DemandeUIModel.java | 19 ++++++++++++++++--- .../franciaflex/faxtomail/web/job/MailFilterJob.java | 2 ++ 7 files changed, 52 insertions(+), 4 deletions(-) diff --git a/faxtomail-persistence/src/main/resources/faxToMail.properties b/faxtomail-persistence/src/main/resources/faxToMail.properties index 08a89db..2bcc043 100644 --- a/faxtomail-persistence/src/main/resources/faxToMail.properties +++ b/faxtomail-persistence/src/main/resources/faxToMail.properties @@ -24,7 +24,8 @@ hibernate.dialect=org.hibernate.dialect.H2Dialect hibernate.connection.driver_class=org.h2.Driver -hibernate.connection.url=jdbc:h2:file:/tmp/faxtomail/h2data;MODE=MSSQLServer;AUTO_SERVER=TRUE +#hibernate.connection.url=jdbc:h2:file:/tmp/faxtomail/h2data;MODE=MSSQLServer;AUTO_SERVER=TRUE +hibernate.connection.url=jdbc:h2:file:/opt/data/ftm/faxtomail/h2data;MODE=MSSQLServer;AUTO_SERVER=TRUE;CACHE_SIZE=8192 hibernate.connection.username=sa hibernate.connection.password= 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 6de2d01..526d1a9 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 @@ -25,6 +25,7 @@ package com.franciaflex.faxtomail.services; */ import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.google.common.base.Preconditions; import org.apache.commons.httpclient.URIException; import org.apache.commons.httpclient.util.URIUtil; import org.apache.commons.io.Charsets; @@ -34,7 +35,9 @@ import org.apache.commons.logging.LogFactory; import javax.mail.MessagingException; import javax.mail.Part; import javax.mail.internet.ContentType; +import javax.mail.internet.MimeUtility; import java.awt.GraphicsEnvironment; +import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.nio.charset.Charset; @@ -155,4 +158,15 @@ public class FaxToMailServiceUtils { return emailContent; } + + public static String getDecodedSubject(String subject) throws UnsupportedEncodingException { + Preconditions.checkNotNull(subject); + + if (subject.startsWith("=?iso-")) { + subject = subject.replaceAll(" ", "=20"); + subject = MimeUtility.decodeText(subject); + } + + return subject; + } } diff --git a/faxtomail-service/src/main/resources/db/migration/h2/V1_1_10_734__add_subject_field_to_email.sql b/faxtomail-service/src/main/resources/db/migration/h2/V1_1_10_734__add_subject_field_to_email.sql new file mode 100644 index 0000000..0e45a8b --- /dev/null +++ b/faxtomail-service/src/main/resources/db/migration/h2/V1_1_10_734__add_subject_field_to_email.sql @@ -0,0 +1,2 @@ +-- add subject field +alter table email add subject longvarchar; \ No newline at end of file diff --git a/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_1_10_734__add_subject_field_to_email.sql b/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_1_10_734__add_subject_field_to_email.sql new file mode 100644 index 0000000..f570d09 --- /dev/null +++ b/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_1_10_734__add_subject_field_to_email.sql @@ -0,0 +1,2 @@ +-- add subject field +alter table email add subject varchar(MAX); \ No newline at end of file diff --git a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java index 6ed7f72..987eec6 100644 --- a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java +++ b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java @@ -379,6 +379,20 @@ public class EmailServiceTest extends AbstractFaxToMailServiceTest { } + @Test + public void testDecodeSubject() { + try { + String subject = "=?iso-8859-1?Q?Un fax de 1 page(s) a =E9t=E9 re=E7u?="; + Assert.assertEquals("Un fax de 1 page(s) a été reçu", FaxToMailServiceUtils.getDecodedSubject(subject)); + + 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)); + + } catch (Exception e) { + Assert.fail(e.getMessage()); + } + } + // @Test // public void testSendPdfBlanc() { // testSendEmail(""); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java index 549a404..91fe056 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java @@ -62,7 +62,6 @@ import javax.mail.Message; import javax.mail.Part; import javax.mail.Session; import javax.mail.internet.MimeMultipart; -import javax.mail.internet.MimeUtility; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.nio.charset.Charset; @@ -190,10 +189,15 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU */ @Override public void fromEntity(Email entity) { - fromBeanBinder.copyExcluding(entity, this, Email.PROPERTY_ATTACHMENT, Email.PROPERTY_REPLIES, Email.PROPERTY_EMAIL_GROUP); + fromBeanBinder.copyExcluding(entity, this, + Email.PROPERTY_ATTACHMENT, + Email.PROPERTY_REPLIES, + Email.PROPERTY_EMAIL_GROUP, + Email.PROPERTY_SUBJECT); loadAttachments(entity); setGroupedDemandes(entity.getEmailGroup()); loadReplies(entity); + this.subject = entity.getSubject(); } public void fromEntityExcluding(Email entity, Set<String> properties) { @@ -203,6 +207,7 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU boolean includeAttachment = properties.add(Email.PROPERTY_ATTACHMENT); boolean includeDemandGroup = properties.add(Email.PROPERTY_EMAIL_GROUP); boolean includeReply = properties.add(Email.PROPERTY_REPLIES); + boolean includeSubject = properties.add(Email.PROPERTY_SUBJECT); fromBeanBinder.copyExcluding(entity, this, properties.toArray(new String[properties.size()])); if (includeAttachment) { loadAttachments(entity); @@ -213,6 +218,9 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU if (includeReply) { loadReplies(entity); } + if (includeSubject) { + this.subject = entity.getSubject(); + } } public void fromEntityIncluding(Email entity, Set<String> properties) { @@ -226,6 +234,9 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU if (properties.isEmpty() || properties.contains(Email.PROPERTY_REPLIES)) { loadReplies(entity); } + if (properties.isEmpty() || properties.contains(Email.PROPERTY_SUBJECT)) { + this.subject = entity.getSubject(); + } } protected void loadAttachments(Email entity) { @@ -917,7 +928,9 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU Charset charset = FaxToMailServiceUtils.getCharset(message); - subject = MimeUtility.decodeText(message.getSubject()); + if (subject == null) { + subject = FaxToMailServiceUtils.getDecodedSubject(message.getSubject()); + } toRecipients = new ArrayList<String>(); ccRecipients = new ArrayList<String>(); diff --git a/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java b/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java index 05d0e41..5ebd6b6 100644 --- a/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java +++ b/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java @@ -472,6 +472,8 @@ public class MailFilterJob extends AbstractFaxToMailJob { OriginalEmail originalEmail = emailService.originalEmailFromMessage((MimeMessage) message, charset); email.setOriginalEmail(originalEmail); + email.setSubject(FaxToMailServiceUtils.getDecodedSubject(message.getSubject())); + List<Attachment> attachments = new ArrayList<>(); if (message.isMimeType("multipart/*")) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.