Author: echatellier Date: 2014-04-29 15:24:22 +0200 (Tue, 29 Apr 2014) New Revision: 57 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/57 Log: Fix attachment filename decoding Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/MailFilterJob.java 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-29 09:14:33 UTC (rev 56) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/MailFilterJob.java 2014-04-29 13:24:22 UTC (rev 57) @@ -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; @@ -52,7 +53,6 @@ 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; @@ -61,14 +61,16 @@ import javax.mail.URLName; import javax.mail.internet.ContentType; import javax.mail.internet.MimeMultipart; +import javax.mail.internet.MimeUtility; + import java.io.File; import java.io.FileOutputStream; +import java.io.UnsupportedEncodingException; 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; @@ -236,7 +238,6 @@ if (message.isMimeType("multipart/*")) { decomposeMultipartEmail(message, email); - } else { String content = IOUtils.toString(message.getInputStream(), charset); email.setPlainContent(content); @@ -273,7 +274,7 @@ // if it is a text part, the,n this is the email content String disposition = bp.getDisposition(); - if (bp.isMimeType("text/*") && !Part.ATTACHMENT.equals(disposition)) { + if (bp.isMimeType("text/*") && !Part.ATTACHMENT.equals(disposition)) { String content = IOUtils.toString(bp.getInputStream(), charset); if (bp.isMimeType("text/plain")) { email.setPlainContent(content); @@ -297,8 +298,17 @@ // remove the guillemets between the id fileName = fileName.replaceFirst("^<(.*)>$", "$1"); } - log.debug("FileName : " + fileName); + try { + fileName = MimeUtility.decodeText(fileName); + log.debug("FileName : " + fileName); + } catch (UnsupportedEncodingException ex) { + // don't care, use filename raw value + if (log.isWarnEnabled()) { + log.warn("Can't debug email file name", ex); + } + } + File dir = new File(FileUtils.getTempDirectory(), email.getTopiaId()); if (!dir.exists()) { dir.mkdir();