branch develop updated (3af9f944 -> 764c5cce)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git from 3af9f944 fixes #10747 : Suppression de la règle du 1 seul lock à la fois. new 8abe98a9 Fix SQL migration new 2b9cf5a4 Fix SQL migration on SQL Server new 764c5cce fixes #10751 - améliorer la mise en forme du corps de mail des réponses ou transferts effectués à partir de FTM The 3 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 764c5ccef33a7673995d2b645f7df093600e2f20 Author: jcouteau <couteau@codelutin.com> Date: Wed Jun 17 14:34:19 2020 +0200 fixes #10751 - améliorer la mise en forme du corps de mail des réponses ou transferts effectués à partir de FTM Utilisation privilégiée du contenu HTML pour les réponses et transferts commit 2b9cf5a41ef6f2041a5a7d8e49b566ed0b1af622 Author: jcouteau <couteau@codelutin.com> Date: Wed Jun 17 08:54:07 2020 +0200 Fix SQL migration on SQL Server commit 8abe98a9ce40d6b4601c2dd1dc866c112b792f78 Author: jcouteau <couteau@codelutin.com> Date: Wed Jun 17 08:53:38 2020 +0200 Fix SQL migration Summary of changes: .../faxtomail/services/service/EmailService.java | 3 + .../services/service/EmailServiceImpl.java | 135 +++++++++++---------- .../sqlserver/V2_5200319_1__add_faxFromNumber.sql | 10 ++ .../V2_5_1_200319_1__add_faxFromNumber.sql | 9 -- .../ui/swing/content/reply/ReplyFormUIHandler.java | 13 +- 5 files changed, 98 insertions(+), 72 deletions(-) create mode 100644 faxtomail-service/src/main/resources/db/migration/sqlserver/V2_5200319_1__add_faxFromNumber.sql delete mode 100644 faxtomail-service/src/main/resources/db/migration/sqlserver/V2_5_1_200319_1__add_faxFromNumber.sql -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 8abe98a9ce40d6b4601c2dd1dc866c112b792f78 Author: jcouteau <couteau@codelutin.com> Date: Wed Jun 17 08:53:38 2020 +0200 Fix SQL migration --- .../db/migration/sqlserver/V2_5200319_1__add_faxFromNumber.sql | 6 ++++++ .../migration/sqlserver/V2_5_1_200319_1__add_faxFromNumber.sql | 9 --------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_5200319_1__add_faxFromNumber.sql b/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_5200319_1__add_faxFromNumber.sql new file mode 100644 index 00000000..eff2d0e8 --- /dev/null +++ b/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_5200319_1__add_faxFromNumber.sql @@ -0,0 +1,6 @@ +-- add faxFromNumber + +alter table mailfolder add column if not exists faxFromNumber varchar(255); + +alter table mailfolder add column if not exists useCurrentLevelFaxFromNumber boolean; +update mailfolder set useCurrentLevelFaxFromNumber = 'f'; diff --git a/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_5_1_200319_1__add_faxFromNumber.sql b/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_5_1_200319_1__add_faxFromNumber.sql deleted file mode 100644 index 7648accb..00000000 --- a/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_5_1_200319_1__add_faxFromNumber.sql +++ /dev/null @@ -1,9 +0,0 @@ --- add faxFromNumber - -alter table mailfolder add faxFromNumber varchar(MAX); -GO - -alter table mailfolder add useCurrentLevelFaxFromNumber bit; -GO -update mailfolder set useCurrentLevelFaxFromNumber = 0 where parent is null; -GO \ No newline at end of file -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 2b9cf5a41ef6f2041a5a7d8e49b566ed0b1af622 Author: jcouteau <couteau@codelutin.com> Date: Wed Jun 17 08:54:07 2020 +0200 Fix SQL migration on SQL Server --- .../db/migration/sqlserver/V2_5200319_1__add_faxFromNumber.sql | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_5200319_1__add_faxFromNumber.sql b/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_5200319_1__add_faxFromNumber.sql index eff2d0e8..93acd649 100644 --- a/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_5200319_1__add_faxFromNumber.sql +++ b/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_5200319_1__add_faxFromNumber.sql @@ -1,6 +1,10 @@ -- add faxFromNumber -alter table mailfolder add column if not exists faxFromNumber varchar(255); +alter table mailfolder add faxFromNumber varchar(255); +GO -alter table mailfolder add column if not exists useCurrentLevelFaxFromNumber boolean; -update mailfolder set useCurrentLevelFaxFromNumber = 'f'; +alter table mailfolder add useCurrentLevelFaxFromNumber bit; +GO + +update mailfolder set useCurrentLevelFaxFromNumber = 0; +GO \ No newline at end of file -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 764c5ccef33a7673995d2b645f7df093600e2f20 Author: jcouteau <couteau@codelutin.com> Date: Wed Jun 17 14:34:19 2020 +0200 fixes #10751 - améliorer la mise en forme du corps de mail des réponses ou transferts effectués à partir de FTM Utilisation privilégiée du contenu HTML pour les réponses et transferts --- .../faxtomail/services/service/EmailService.java | 3 + .../services/service/EmailServiceImpl.java | 135 +++++++++++---------- .../ui/swing/content/reply/ReplyFormUIHandler.java | 13 +- 3 files changed, 88 insertions(+), 63 deletions(-) diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java index e077331c..7ba9c79a 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java @@ -45,6 +45,7 @@ import com.franciaflex.faxtomail.services.service.exceptions.FolderNotReadableEx import com.franciaflex.faxtomail.services.service.exceptions.InvalidClientException; import com.franciaflex.faxtomail.services.service.imports.ArchiveImportResult; import com.itextpdf.text.DocumentException; +import org.apache.commons.httpclient.URIException; import org.apache.commons.mail.EmailException; import org.nuiton.util.pagination.PaginationParameter; import org.nuiton.util.pagination.PaginationResult; @@ -197,4 +198,6 @@ public interface EmailService extends FaxToMailService { Attachment convertHTMLToPdf(List<Attachment> attachments, List<String> content, String name) throws IOException; GeneratedPDFPage createGeneratedPDFPage(Attachment attachment, BufferedImage image); + + String extractHtmlContent(List<Attachment> attachments, List<String> contentList) throws URIException; } diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java index 8bf1f22d..2fad48fa 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java @@ -59,6 +59,7 @@ import gui.ava.html.Html2Image; import gui.ava.html.renderer.ImageRenderer; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.Predicate; +import org.apache.commons.httpclient.URIException; import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; @@ -2326,69 +2327,10 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe public Attachment convertHTMLToPdf(List<Attachment> attachments, List<String> contentList, String name) throws IOException { Attachment result = null; ByteArrayOutputStream os = new ByteArrayOutputStream(); - Collection<File> fileToDelete = new ArrayList<File>(); try { - - List<String> contents = new ArrayList<String>(); - - if (contentList != null) { - for (String content : contentList) { - content = content.replaceAll("<meta (.*?)>(</meta>)?", ""); - // remove the images whose sources are on the filesystem of the sender (yes, it happens...) - // cf #6996 - content = content.replaceAll("(\\w+)=([\"'])file://.*?([\"'])", ""); - - for (Attachment attachment : attachments) { - String key = attachment.getContentId(); - if (key == null) { - key = attachment.getOriginalFileName(); - } - - // get file content - AttachmentFile attachmentFile = attachment.getOriginalFile(); - File file = attachmentFile.getFile(); - fileToDelete.add(file); - - // replace the inline attachments with the extracted attachment file url - // match les patterns: - // <td background="cid:bg.gif" height="52"> - // <img border=0 src="cid:bg.gif" /> - // <img src='cid:5e9ef859-ea65-4f9b-a9fa-30d4a2c5837c' - content = content.replaceAll("(\\w+)=([\"'])cid:" + Pattern.quote(key) + "([\"'])", "$1=$2" + file.toURI() + "$3"); - - if (log.isDebugEnabled()) { - log.debug("Mapping attachment id " + key + " to file " + file.toURI()); - } - } - - // remove the remaining cids whose attachment is not in the email (yes, it happens) - // cf #6996 - content = content.replaceAll("(\\w+)=([\"'])cid:.*?([\"'])", ""); - - // on reformate les urls pour supprimer les caractères qui vont pas (ex espaces) - // cf #7740 - String defaultImageIfMalformedUrl = serviceContext.getApplicationConfig().getDefaultImageIfMalformedUrl(); - content = FaxToMailServiceUtils.encodeImageSourcesInEmail(content, defaultImageIfMalformedUrl); - - //On remplace les font-size:0 pour éviter les font-size too small - //cf #10123 - content = content.replace("font-size:0", "font-size:1"); - - - content = content.replaceAll("(.+) width=([\"])(.+)([\"])", "$1"); - content = content.replaceAll("(.+) width=(['])(.+)(['])", "$1"); - content = content.replaceAll("(.+) height=([\"])(.+)([\"])", "$1"); - content = content.replaceAll("(.+) height=(['])(.+)(['])", "$1"); - content = content.replaceAll("(style=\\\")([a-zA-Z0-9:;\\.\\s\\(\\)\\-\\,]*)(\\\")", "$1$3"); - content = content.replaceAll("(style=\\\')([a-zA-Z0-9:;\\.\\s\\(\\)\\-\\,]*)(\\\')", "$1$3"); - content = content.replace(" ",""); - - contents.add(content); - } - } - - Html2Image html2Image = Html2Image.fromHtml(StringUtils.join(contents, "<hr/>")); + String content = extractHtmlContent(attachments, contentList); + Html2Image html2Image = Html2Image.fromHtml(content); ImageRenderer imageRenderer = html2Image.getImageRenderer().setWidth((int) PageSize.A4.getWidth()); org.w3c.dom.Document doc = html2Image.getParser().getDocument(); @@ -2477,6 +2419,75 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe log.warn("Can't convert html content to pdf", er); } + } + + return result; + } + + public String extractHtmlContent(List<Attachment> attachments, List<String> contentList) throws URIException { + + + List<String> contents = new ArrayList<>(); + Collection<File> fileToDelete = new ArrayList<>(); + + try { + if (contentList != null) { + for (String content : contentList) { + content = content.replaceAll("<meta (.*?)>(</meta>)?", ""); + // remove the images whose sources are on the filesystem of the sender (yes, it happens...) + // cf #6996 + content = content.replaceAll("(\\w+)=([\"'])file://.*?([\"'])", ""); + + for (Attachment attachment : attachments) { + String key = attachment.getContentId(); + if (key == null) { + key = attachment.getOriginalFileName(); + } + + // get file content + AttachmentFile attachmentFile = attachment.getOriginalFile(); + if (attachmentFile != null) { + File file = attachmentFile.getFile(); + fileToDelete.add(file); + + // replace the inline attachments with the extracted attachment file url + // match les patterns: + // <td background="cid:bg.gif" height="52"> + // <img border=0 src="cid:bg.gif" /> + // <img src='cid:5e9ef859-ea65-4f9b-a9fa-30d4a2c5837c' + content = content.replaceAll("(\\w+)=([\"'])cid:" + Pattern.quote(key) + "([\"'])", "$1=$2" + file.toURI() + "$3"); + + if (log.isDebugEnabled()) { + log.debug("Mapping attachment id " + key + " to file " + file.toURI()); + } + } + } + + // remove the remaining cids whose attachment is not in the email (yes, it happens) + // cf #6996 + content = content.replaceAll("(\\w+)=([\"'])cid:.*?([\"'])", ""); + + // on reformate les urls pour supprimer les caractères qui vont pas (ex espaces) + // cf #7740 + String defaultImageIfMalformedUrl = serviceContext.getApplicationConfig().getDefaultImageIfMalformedUrl(); + content = FaxToMailServiceUtils.encodeImageSourcesInEmail(content, defaultImageIfMalformedUrl); + + //On remplace les font-size:0 pour éviter les font-size too small + //cf #10123 + content = content.replace("font-size:0", "font-size:1"); + + + content = content.replaceAll("(.+) width=([\"])(.+)([\"])", "$1"); + content = content.replaceAll("(.+) width=(['])(.+)(['])", "$1"); + content = content.replaceAll("(.+) height=([\"])(.+)([\"])", "$1"); + content = content.replaceAll("(.+) height=(['])(.+)(['])", "$1"); + content = content.replaceAll("(style=\\\")([a-zA-Z0-9:;\\.\\s\\(\\)\\-\\,]*)(\\\")", "$1$3"); + content = content.replaceAll("(style=\\\')([a-zA-Z0-9:;\\.\\s\\(\\)\\-\\,]*)(\\\')", "$1$3"); + content = content.replace(" ", ""); + + contents.add(content); + } + } } finally { // on supprime les fichiers avant le delete on exit pour eviter que le disque ne se remplissent trop vite for (File file : fileToDelete) { @@ -2484,7 +2495,7 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe } } - return result; + return StringUtils.join(contents, "<hr/>"); } public GeneratedPDFPage createGeneratedPDFPage(Attachment attachment, BufferedImage image) { diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java index 573d44eb..42290d7e 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java @@ -32,6 +32,7 @@ import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.persistence.entities.SigningForDomain; import com.franciaflex.faxtomail.services.FaxToMailServiceContext; +import com.franciaflex.faxtomail.services.service.EmailServiceImpl; import com.franciaflex.faxtomail.services.service.ldap.Contact; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.content.reply.actions.AddAttachmentToReplyAction; @@ -221,8 +222,18 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo signing = ""; } + String quotedText = ""; String plainContent = StringUtils.join(demand.getPlainContent(), CONTENT_SEPARATOR); - String quotedText = plainContent != null ? plainContent.replaceAll("\n", "<br/> ") : ""; + try(FaxToMailServiceContext serviceContext = getContext().newServiceContext()) { + String htmlContent = serviceContext.getEmailService().extractHtmlContent(demand.getAttachment(), demand.getHtmlContent()); + if (htmlContent != null) { + quotedText = htmlContent; + } else { + quotedText = plainContent != null ? plainContent.replaceAll("\n", "<br/> ") : ""; + } + } catch (IOException eee){ + log.error("Error setting maxAttachmentLength",eee); + } String quotedReply; if (model.isForward()) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm