This is an automated email from the git hooks/post-receive script. New commit to branch feature/8053 in repository faxtomail. See http://git.codelutin.com/faxtomail.git commit e25bc94904a9f30ca169cfbbe561a12070bdc618 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 --- .../src/main/resources/faxToMail.properties | 4 ++-- faxtomail-persistence/src/main/xmi/faxtomail.zargo | Bin 30153 -> 30210 bytes .../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 ++ .../services/service/EmailServiceTest.java | 14 ++++++++++++++ .../ui/swing/content/demande/DemandeUIModel.java | 19 ++++++++++++++++--- .../faxtomail/web/job/MailFilterJob.java | 2 ++ 8 files changed, 52 insertions(+), 5 deletions(-) diff --git a/faxtomail-persistence/src/main/resources/faxToMail.properties b/faxtomail-persistence/src/main/resources/faxToMail.properties index 9e4dc11..c4a1023 100644 --- a/faxtomail-persistence/src/main/resources/faxToMail.properties +++ b/faxtomail-persistence/src/main/resources/faxToMail.properties @@ -24,8 +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:/home/kmorin/faxtomail/h2data;MODE=MSSQLServer;AUTO_SERVER=TRUE;CACHE_SIZE=8192 +#hibernate.connection.url=jdbc:h2:file:/tmp/faxtomail/h2data;MODE=MSSQLServer;AUTO_SERVER=TRUE +hibernate.connection.url=jdbc:h2:file:/opt/data/ftm/faxtomail-1.1/h2data;MODE=MSSQLServer;AUTO_SERVER=TRUE;CACHE_SIZE=8192 hibernate.connection.username=sa hibernate.connection.password= diff --git a/faxtomail-persistence/src/main/xmi/faxtomail.zargo b/faxtomail-persistence/src/main/xmi/faxtomail.zargo index 2b0db70..a6a2f22 100644 Binary files a/faxtomail-persistence/src/main/xmi/faxtomail.zargo and b/faxtomail-persistence/src/main/xmi/faxtomail.zargo differ 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 4092f55..34aa7b4 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 8e3b156..b13512b 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 @@ -376,6 +376,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 testSendEmail() { // try { 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 d0d2c8b..581c117 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; @@ -191,10 +190,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) { @@ -204,6 +208,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); @@ -214,6 +219,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) { @@ -227,6 +235,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) { @@ -908,7 +919,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 ff389be..c2c7364 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 @@ -469,6 +469,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>.