r50 - in trunk: . faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies faxtomail-ui-swing/src/main/resources/icons faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web
Author: kmorin Date: 2014-04-28 10:52:27 +0200 (Mon, 28 Apr 2014) New Revision: 50 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/50 Log: gestion de l'encoding et des pi?\195?\168ces jointes de type text Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java trunk/faxtomail-ui-swing/src/main/resources/icons/action-cross.png trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/MailFilterJob.java trunk/pom.xml Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-04-25 14:35:14 UTC (rev 49) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-04-28 08:52:27 UTC (rev 50) @@ -49,6 +49,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.mail.DefaultAuthenticator; +import org.apache.commons.mail.EmailConstants; import org.apache.commons.mail.MultiPartEmail; import javax.mail.internet.MailDateFormat; @@ -308,6 +309,7 @@ message.setAuthenticator(new DefaultAuthenticator(smtpUser, password)); message.setSSLOnConnect(true); + message.setCharset(EmailConstants.UTF_8); message.setFrom(from); message.addTo(to); message.setSubject(subject); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java 2014-04-25 14:35:14 UTC (rev 49) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java 2014-04-28 08:52:27 UTC (rev 50) @@ -206,7 +206,8 @@ BodyPart bp = mimeMultipart.getBodyPart(j); // if it is a text part, the,n this is the email content - if (bp.isMimeType("text/*")) { + String disposition = bp.getDisposition(); + if (bp.isMimeType("text/*") && Part.INLINE.equals(disposition)) { String content = IOUtils.toString(bp.getInputStream()); reply.setMessage(content); Modified: trunk/faxtomail-ui-swing/src/main/resources/icons/action-cross.png =================================================================== (Binary files differ) Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/MailFilterJob.java =================================================================== --- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/MailFilterJob.java 2014-04-25 14:35:14 UTC (rev 49) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/MailFilterJob.java 2014-04-28 08:52:27 UTC (rev 50) @@ -36,6 +36,7 @@ import com.franciaflex.faxtomail.services.service.CompanyService; import com.franciaflex.faxtomail.services.service.EmailService; import com.franciaflex.faxtomail.services.service.MailFolderService; +import org.apache.commons.io.Charsets; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; @@ -51,19 +52,23 @@ import javax.mail.BodyPart; import javax.mail.Flags; import javax.mail.Folder; +import javax.mail.Header; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Part; import javax.mail.Session; import javax.mail.Store; import javax.mail.URLName; +import javax.mail.internet.ContentType; import javax.mail.internet.MimeMultipart; import java.io.File; import java.io.FileOutputStream; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Date; +import java.util.Enumeration; import java.util.List; import java.util.Properties; @@ -106,7 +111,6 @@ properties.setProperty("mail.pop3.host", account.getHost()); properties.setProperty("mail.pop3.user", account.getUser()); - Session session = Session.getInstance(properties); Store store = null; Folder defaultFolder = null; @@ -170,6 +174,8 @@ int messageNumber = count - i; Message message = folder.getMessage(messageNumber); + Charset charset = getCharset(message); + List<String> modifiedProperties = new ArrayList<>(); log.debug("Object: " + message.getSubject()); @@ -225,14 +231,14 @@ email.setDemandStatus(DemandStatus.UNTREATED); modifiedProperties.add(Email.PROPERTY_DEMAND_STATUS); - String originalContent = IOUtils.toString(message.getInputStream()); + String originalContent = IOUtils.toString(message.getInputStream(), charset); email.setOriginalEmail(originalContent); if (message.isMimeType("multipart/*")) { decomposeMultipartEmail(message, email); } else { - String content = IOUtils.toString(message.getInputStream()); + String content = IOUtils.toString(message.getInputStream(), charset); email.setPlainContent(content); } @@ -263,10 +269,12 @@ for (int j = 0; j < multiPartCount; j++) { BodyPart bp = mimeMultipart.getBodyPart(j); + Charset charset = getCharset(bp); // if it is a text part, the,n this is the email content - if (bp.isMimeType("text/*")) { - String content = IOUtils.toString(bp.getInputStream()); + String disposition = bp.getDisposition(); + if (bp.isMimeType("text/*") && !Part.ATTACHMENT.equals(disposition)) { + String content = IOUtils.toString(bp.getInputStream(), charset); if (bp.isMimeType("text/plain")) { email.setPlainContent(content); } else { @@ -309,4 +317,11 @@ } } + protected Charset getCharset(Part part) throws MessagingException { + ContentType contentType = new ContentType(part.getContentType()); + String charsetName = contentType.getParameter("charset"); + Charset charset = Charsets.toCharset(charsetName); + return charset; + } + } Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2014-04-25 14:35:14 UTC (rev 49) +++ trunk/pom.xml 2014-04-28 08:52:27 UTC (rev 50) @@ -513,30 +513,6 @@ <version>1.1.1</version> </dependency> - <!--<dependency>--> - <!--<groupId>net.atlanticbb.tantlinger</groupId>--> - <!--<artifactId>shef</artifactId>--> - <!--<version>2009-05-12</version>--> - <!--</dependency>--> - - <!--<dependency>--> - <!--<groupId>jtidy</groupId>--> - <!--<artifactId>jtidy</artifactId>--> - <!--<version>8.0</version>--> - <!--</dependency>--> - - <!--<dependency>--> - <!--<groupId>org.bushe</groupId>--> - <!--<artifactId>sam</artifactId>--> - <!--<version>1.0</version>--> - <!--</dependency>--> - - <!--<dependency>--> - <!--<groupId>novaworx</groupId>--> - <!--<artifactId>novaworx-syntax</artifactId>--> - <!--<version>0.0.7</version>--> - <!--</dependency>--> - </dependencies> </dependencyManagement>
participants (1)
-
kmorin@users.forge.codelutin.com