branch develop-1.1.x updated (2df133a -> e7765d2)
This is an automated email from the git hooks/post-receive script. New change to branch develop-1.1.x in repository faxtomail. See http://git.codelutin.com/faxtomail.git from 2df133a [jgitflow-maven-plugin]Updating develop poms back to pre merge state new 69f8ae3 affichage des différentes parties text/html de l'email à la suite (refs #7714) new 6004998 gestion du cas où plusieurs parties text/plain seraient dans le mail (refs #7714) new a587daa fixes #7714 new e7765d2 concaténation des différentes partie text/html de l'email pour la génération du pdf (fixes #7716) The 4 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 e7765d2f279ab6cd6a29ca78526e4c40fe39e970 Author: Kevin Morin <morin@codelutin.com> Date: Thu Nov 12 16:58:56 2015 +0100 concaténation des différentes partie text/html de l'email pour la génération du pdf (fixes #7716) commit a587daaaf96f4cdbca2a7d71f6d09d81f51e0b39 Merge: 2df133a 6004998 Author: Kevin Morin <morin@codelutin.com> Date: Thu Nov 12 16:28:54 2015 +0100 fixes #7714 commit 60049985c999781b0d5c5085bb26a13057b24701 Author: Kevin Morin <morin@codelutin.com> Date: Thu Nov 12 16:23:40 2015 +0100 gestion du cas où plusieurs parties text/plain seraient dans le mail (refs #7714) commit 69f8ae3970ba55282200f4c21ab7bdcb166a321e Author: Kevin Morin <morin@codelutin.com> Date: Thu Nov 12 16:10:48 2015 +0100 affichage des différentes parties text/html de l'email à la suite (refs #7714) Summary of changes: .../faxtomail/services/service/EmailService.java | 4 +- .../services/service/EmailServiceImpl.java | 81 ++++++------ .../ui/swing/content/demande/DemandeUI.css | 4 - .../ui/swing/content/demande/DemandeUI.jaxx | 6 +- .../ui/swing/content/demande/DemandeUIHandler.java | 4 +- .../ui/swing/content/demande/DemandeUIModel.java | 38 ++++-- .../ui/swing/content/reply/ReplyFormUIHandler.java | 15 ++- .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 136 +++++++++++++-------- .../faxtomail/web/job/MailFilterJob.java | 2 +- 9 files changed, 177 insertions(+), 113 deletions(-) -- 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-1.1.x in repository faxtomail. See http://git.codelutin.com/faxtomail.git commit 69f8ae3970ba55282200f4c21ab7bdcb166a321e Author: Kevin Morin <morin@codelutin.com> Date: Thu Nov 12 16:10:48 2015 +0100 affichage des différentes parties text/html de l'email à la suite (refs #7714) --- .../ui/swing/content/demande/DemandeUI.css | 4 - .../ui/swing/content/demande/DemandeUI.jaxx | 6 +- .../ui/swing/content/demande/DemandeUIHandler.java | 4 +- .../ui/swing/content/demande/DemandeUIModel.java | 17 ++- .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 133 +++++++++++++-------- 5 files changed, 99 insertions(+), 65 deletions(-) diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css index 7661cfd..6b33800 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css @@ -191,10 +191,6 @@ JTextField, JXTable, BeanFilterableComboBox, #commentField, ButtonAttachment, Bu verticalAlignment: { SwingConstants.TOP }; } -#mailBodyField { - editable: false; -} - .text-row { layout: { new FlowLayout(FlowLayout.LEADING) }; } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx index 82b420c..4fb811c 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx @@ -43,6 +43,7 @@ org.jdesktop.swingx.JXTitledPanel org.jdesktop.swingx.JXTable + javax.swing.BoxLayout javax.swing.ListSelectionModel javax.swing.SwingConstants @@ -312,8 +313,9 @@ <!--</row>--> <row> <cell weighty="1" columns="2"> - <JScrollPane id='mailBodyPane'> - <JTextPane id='mailBodyField'/> + <JScrollPane id='mailBodyScrollPane'> + <JPanel id="mailBodyPanel" layout="{new BoxLayout(mailBodyPanel, BoxLayout.PAGE_AXIS)}"> + </JPanel> </JScrollPane> </cell> </row> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java index 2455bf7..647ecb5 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java @@ -208,8 +208,8 @@ public class DemandeUIHandler extends AbstractFaxToMailUIHandler<DemandeUIModel, } initBeanFilterableComboBox(ui.getWaitingStateComboBox(), waitingStates, model.getWaitingState()); - JTextPane editor = ui.getMailBodyField(); - FaxToMailUIUtil.setEmailContentInTextPane(this, editor, model); + JPanel editorPanel = ui.getMailBodyPanel(); + FaxToMailUIUtil.setEmailContentInTextPane(this, model, editorPanel); // init table final JXTable table = ui.getRangeTable(); 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 1c0ffa9..bc22fc0 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 @@ -115,7 +115,7 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU protected boolean editable = true; - protected String htmlContent; + protected List<String> htmlContents; protected String plainContent; @@ -342,11 +342,11 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU return plainContent; } - public String getHtmlContent() { - if (htmlContent == null) { + public List<String> getHtmlContent() { + if (htmlContents == null) { decomposeEmail(); } - return htmlContent; + return htmlContents; } public void setOriginalEmail(OriginalEmail originalEmail) { @@ -966,14 +966,21 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU if (bp.isMimeType("text/plain")) { plainContent = content; + } else { - htmlContent = content; + if (htmlContents == null) { + htmlContents = new ArrayList<String>(); + } + + htmlContents.add(content); + } // if it is multipart part, decompose it } else if (bp.isMimeType("multipart/*")) { decomposeMultipartEmail(bp); } + } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java index ee33699..5e0e049 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java @@ -340,64 +340,22 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { return EDITABLE_EXTENSIONS.contains(extension.toUpperCase()); } - public static void setEmailContentInTextPane(DemandeUIHandler handler, JTextPane textPane, DemandeUIModel demandeUIModel) { - String content = demandeUIModel.getHtmlContent(); - if (content != null) { - textPane.setContentType("text/html"); - HTMLEditorKit htmlEditorKit = new HTMLEditorKit(); - textPane.setEditorKit(htmlEditorKit); - - textPane.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, true); - Font font = new Font(Font.MONOSPACED, Font.PLAIN, 16); - textPane.setFont(font); - - textPane.addHyperlinkListener(new HyperlinkListener() { - @Override - public void hyperlinkUpdate(HyperlinkEvent e) { - if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { - FaxToMailUIUtil.openLink(e.getURL()); - } - } - }); - - // the meta tag makes the content is not displayed - content = content.replaceAll("<meta (.*?)>(</meta>)?", ""); + public static void setEmailContentInTextPane(DemandeUIHandler handler, + DemandeUIModel demandeUIModel, + JPanel textPanePanel) { - if (log.isTraceEnabled()) { - log.trace("Content before mail = " + content); - } + List<String> contents = demandeUIModel.getHtmlContent(); - for (Attachment attachment : demandeUIModel.getAttachment()) { - String key = attachment.getContentId(); - if (key == null) { - key = attachment.getOriginalFileName(); - } - - // get file content - forceAttachmentFileLoading(handler.getContext(), attachment); - AttachmentFile attachmentFile = attachment.getOriginalFile(); - File file = attachmentFile.getFile(); - - // 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()); - } - } - - if (log.isTraceEnabled()) { - log.trace("Content after mail = " + content); + if (contents != null) { + for (String content : contents) { + addHtmlTextPane(handler, demandeUIModel, textPanePanel, content); } } else { - content = demandeUIModel.getPlainContent(); + JTextPane textPane = new JTextPane(); + textPane.setText(demandeUIModel.getPlainContent()); + textPanePanel.add(textPane);e } - textPane.setText(content); } /** @@ -814,4 +772,75 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { return demandType != null && FaxToMailServiceUtils.contains(demandType.getRequiredFields(), MailField.RANGE_ROW); } + protected static void addHtmlTextPane(DemandeUIHandler handler, + DemandeUIModel demandeUIModel, + JPanel textPanePanel, + String content) { + + JTextPane textPane = createHtmlTextPane(); + + // the meta tag makes the content is not displayed + content = content.replaceAll("<meta (.*?)>(</meta>)?", ""); + + if (log.isTraceEnabled()) { + log.trace("Content before mail = " + content); + } + + for (Attachment attachment : demandeUIModel.getAttachment()) { + String key = attachment.getContentId(); + if (key == null) { + key = attachment.getOriginalFileName(); + } + + // get file content + forceAttachmentFileLoading(handler.getContext(), attachment); + AttachmentFile attachmentFile = attachment.getOriginalFile(); + File file = attachmentFile.getFile(); + + // 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()); + } + } + + if (log.isTraceEnabled()) { + log.trace("Content after mail = " + content); + } + + textPane.setText(content); + + textPanePanel.add(textPane); + + textPanePanel.add(Box.createVerticalStrut(3)); + } + + protected static JTextPane createHtmlTextPane() { + JTextPane textPane = new JTextPane(); + textPane.setEditable(false); + + textPane.setContentType("text/html"); + HTMLEditorKit htmlEditorKit = new HTMLEditorKit(); + textPane.setEditorKit(htmlEditorKit); + + textPane.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, true); + Font font = new Font(Font.MONOSPACED, Font.PLAIN, 16); + textPane.setFont(font); + + textPane.addHyperlinkListener(new HyperlinkListener() { + @Override + public void hyperlinkUpdate(HyperlinkEvent e) { + if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { + FaxToMailUIUtil.openLink(e.getURL()); + } + } + }); + return textPane; + } + } -- 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-1.1.x in repository faxtomail. See http://git.codelutin.com/faxtomail.git commit 60049985c999781b0d5c5085bb26a13057b24701 Author: Kevin Morin <morin@codelutin.com> Date: Thu Nov 12 16:23:40 2015 +0100 gestion du cas où plusieurs parties text/plain seraient dans le mail (refs #7714) --- .../ui/swing/content/demande/DemandeUIModel.java | 21 ++++++++++++++------- .../ui/swing/content/reply/ReplyFormUIHandler.java | 15 +++++++++++---- .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 11 ++++++++--- 3 files changed, 33 insertions(+), 14 deletions(-) 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 bc22fc0..1d5ebd9 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 @@ -44,6 +44,7 @@ import com.franciaflex.faxtomail.services.FaxToMailServiceUtils; import com.franciaflex.faxtomail.ui.swing.content.attachment.AttachmentModelAware; import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel; import com.google.common.collect.Lists; +import jaxx.runtime.JAXXUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; @@ -117,7 +118,7 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU protected List<String> htmlContents; - protected String plainContent; + protected List<String> plainContents; protected String subject; @@ -335,11 +336,11 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU return StringUtils.join(ccRecipients, ", "); } - public String getPlainContent() { - if (plainContent == null) { + public List<String> getPlainContent() { + if (plainContents == null) { decomposeEmail(); } - return plainContent; + return plainContents; } public List<String> getHtmlContent() { @@ -929,7 +930,10 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU } else if (message.isMimeType("text/*")) { String content = IOUtils.toString(message.getInputStream(), charset); - plainContent = content; + if (plainContents == null) { + plainContents = new ArrayList<String>(); + } + plainContents.add(JAXXUtil.getStringValue(content)); } } catch (Exception e) { @@ -937,7 +941,7 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU log.warn("error while parsing the original email content, may come from the imported archives", e); } //may comes from the imported archives - plainContent = getOriginalEmailContent(); + plainContents = Lists.newArrayList(getOriginalEmailContent()); toRecipients = Lists.newArrayList(getRecipient()); } } @@ -965,7 +969,10 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU String content = IOUtils.toString(bp.getInputStream(), charset); if (bp.isMimeType("text/plain")) { - plainContent = content; + if (plainContents == null) { + plainContents = new ArrayList<String>(); + } + plainContents.add(JAXXUtil.getStringValue(content)); } else { if (htmlContents == null) { 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 8bdecde..f05b4ea 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 @@ -36,7 +36,6 @@ import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; import com.google.common.base.Strings; import com.google.common.collect.Lists; -import jaxx.runtime.JAXXUtil; import jaxx.runtime.SwingUtil; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.io.FileUtils; @@ -46,8 +45,16 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.jaxx.application.swing.util.Cancelable; import org.nuiton.validator.bean.simple.SimpleBeanValidator; -import javax.swing.*; -import java.awt.*; +import javax.swing.ComboBoxEditor; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JFileChooser; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.JTextPane; +import java.awt.Component; +import java.awt.Dimension; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; @@ -123,7 +130,7 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo model.setSubject(t("faxtomail.reply.subject", demand.getSubject())); - String plainContent = JAXXUtil.getStringValue(demand.getPlainContent()); + String plainContent = StringUtils.join(demand.getPlainContent(), "\n\n----------------\n\n"); String quotedReply = t("faxtomail.reply.message", decorate(demand.getReceptionDate()), demand.getSender(), diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java index 5e0e049..16ed24a 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java @@ -352,9 +352,14 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { } } else { - JTextPane textPane = new JTextPane(); - textPane.setText(demandeUIModel.getPlainContent()); - textPanePanel.add(textPane);e + contents = demandeUIModel.getPlainContent(); + + for (String content : contents) { + JTextPane textPane = new JTextPane(); + textPane.setText(content); + textPanePanel.add(textPane); + textPanePanel.add(Box.createVerticalStrut(3)); + } } } -- 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-1.1.x in repository faxtomail. See http://git.codelutin.com/faxtomail.git commit a587daaaf96f4cdbca2a7d71f6d09d81f51e0b39 Merge: 2df133a 6004998 Author: Kevin Morin <morin@codelutin.com> Date: Thu Nov 12 16:28:54 2015 +0100 fixes #7714 .../ui/swing/content/demande/DemandeUI.css | 4 - .../ui/swing/content/demande/DemandeUI.jaxx | 6 +- .../ui/swing/content/demande/DemandeUIHandler.java | 4 +- .../ui/swing/content/demande/DemandeUIModel.java | 38 ++++-- .../ui/swing/content/reply/ReplyFormUIHandler.java | 15 ++- .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 136 +++++++++++++-------- 6 files changed, 128 insertions(+), 75 deletions(-) -- 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-1.1.x in repository faxtomail. See http://git.codelutin.com/faxtomail.git commit e7765d2f279ab6cd6a29ca78526e4c40fe39e970 Author: Kevin Morin <morin@codelutin.com> Date: Thu Nov 12 16:58:56 2015 +0100 concaténation des différentes partie text/html de l'email pour la génération du pdf (fixes #7716) --- .../faxtomail/services/service/EmailService.java | 4 +- .../services/service/EmailServiceImpl.java | 81 ++++++++++++---------- .../faxtomail/web/job/MailFilterJob.java | 2 +- 3 files changed, 49 insertions(+), 38 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 cf07f89..e76b6aa 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 @@ -154,7 +154,7 @@ public interface EmailService extends FaxToMailService { * @param part the part to decompose * @throws Exception */ - String decomposeMultipartEmail(List<Attachment> attachments, Part part) throws Exception; + List<String> decomposeMultipartEmail(List<Attachment> attachments, Part part) throws Exception; /** * Retourne un input stream sur une piece jointe convertie ou pas. @@ -186,5 +186,5 @@ public interface EmailService extends FaxToMailService { * @return image attachment or {@code null} if content can't be converted * @throws IOException */ - Attachment convertHTMLToPdf(List<Attachment> attachments, String content, String name) throws IOException; + Attachment convertHTMLToPdf(List<Attachment> attachments, List<String> content, String name) throws IOException; } 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 8a4c670..feee1fa 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 @@ -1835,12 +1835,12 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe } @Override - public String decomposeMultipartEmail(List<Attachment> attachments, Part part) throws Exception { + public List<String> decomposeMultipartEmail(List<Attachment> attachments, Part part) throws Exception { return decomposeMultipartEmail(attachments, part, 0); } - protected String decomposeMultipartEmail(List<Attachment> attachments, Part part, int decomposingForwardedEmail) throws Exception { - String result = null; + protected List<String> decomposeMultipartEmail(List<Attachment> attachments, Part part, int decomposingForwardedEmail) throws Exception { + List<String> result = null; DataSource dataSource = part.getDataHandler().getDataSource(); MimeMultipart mimeMultipart = new MimeMultipart(dataSource); @@ -1869,12 +1869,15 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe } } else { - result = content; + if (result == null) { + result = new ArrayList<String>(); + } + result.add(content); } // if it is multipart part, decompose it } else if (bp.isMimeType("multipart/*")) { - String htmlContent = decomposeMultipartEmail(attachments, bp, decomposingForwardedEmail); + List<String> htmlContent = decomposeMultipartEmail(attachments, bp, decomposingForwardedEmail); if (htmlContent != null) { result = htmlContent; } @@ -1884,8 +1887,8 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe Attachment attachment = null; String fileName = t("faxtomail.email.content.attachment.forwardedFileName", decomposingForwardedEmail) + ".pdf"; try { - String content = decomposeMultipartEmail(attachments, bp, decomposingForwardedEmail); - if (StringUtils.isNotBlank(content)) { + List<String> content = decomposeMultipartEmail(attachments, bp, decomposingForwardedEmail); + if (content != null) { attachment = convertHTMLToPdf(attachments, content, fileName); } @@ -2076,44 +2079,52 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe } @Override - public Attachment convertHTMLToPdf(List<Attachment> attachments, String content, String name) throws IOException { + 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 { - 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); + List<String> contents = new ArrayList<String>(); + + 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(); + } - // 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"); + // get file content + AttachmentFile attachmentFile = attachment.getOriginalFile(); + File file = attachmentFile.getFile(); + fileToDelete.add(file); - if (log.isDebugEnabled()) { - log.debug("Mapping attachment id " + key + " to file " + file.toURI()); + // 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:.*?([\"'])", ""); + // remove the remaining cids whose attachment is not in the email (yes, it happens) + // cf #6996 + content = content.replaceAll("(\\w+)=([\"'])cid:.*?([\"'])", ""); + + contents.add(content); + } - Html2Image html2Image = Html2Image.fromHtml(content); + Html2Image html2Image = Html2Image.fromHtml(StringUtils.join(contents, "<hr/>")); ImageRenderer imageRenderer = html2Image.getImageRenderer().setWidth((int) PageSize.A4.getWidth()); org.w3c.dom.Document doc = html2Image.getParser().getDocument(); 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 ce11938..ff389be 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 @@ -473,7 +473,7 @@ public class MailFilterJob extends AbstractFaxToMailJob { if (message.isMimeType("multipart/*")) { // manage boundary id - String htmlContent = emailService.decomposeMultipartEmail(attachments, message); + List<String> htmlContent = emailService.decomposeMultipartEmail(attachments, message); if (htmlContent != null) { if (log.isDebugEnabled()) { log.debug("Converting html content to pdf : " + message.getSubject()); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm