sid created EMAIL-180:
--------------------------
Summary: Unable to read filename with 28+ characters
Key: EMAIL-180
URL: https://issues.apache.org/jira/browse/EMAIL-180
Project: Commons Email
Issue Type: Bug
Reporter: sid
Hello,
I am using apache.common.email version 1.5 and trying to parse outlook email,
I have noticed bodyPart .getFileName() returns value *null* ( where bodyPart =
(Multipart) mimeMessage.getContent().getBodyPart()), with headers such as
below(generated within outlook email) for an example -
--_004_BN6PR05MB28973EFBD6850890BFB0E931E25E0BN6PR05MB2897namp_
Content-Type: application/pdf;
{color:#FF0000}name="ABCDEFG test case without contract id #1.pdf"{color}
Content-Description: ABCDEFG test case without contract id #1.pdf
Content-Disposition: attachment;
filename="ABCDEFG test case without contract id #1.pdf"; size=484417;
creation-date="Sun, 15 Jul 2018 15:12:47 GMT";
modification-date="Sun, 15 Jul 2018 15:13:15 GMT"
Content-Transfer-Encoding: base64
my primary observation is - due to character limitation according to RFC, the
headers gets broken and gets displaced on next separate line - which parser is
unable to parse.
However, for now - I am using this custom method to handle such issues.
public static String parseDescriptionFileHeader(Enumeration headerEnumeration) {
String fileName = null;
try {
while (headerEnumeration.hasMoreElements()) {
Header header = (Header) headerEnumeration.nextElement();
String name = header.getName();
if(name.contains("name="))
{
Pattern p = Pattern.compile("\"([^\"]*)\"");
Matcher m = p.matcher(name);
while (m.find()) {
fileName = m.group(1);
return fileName;
}
}
}
} catch (Exception e) {
system.out.println("Unable to retrieve attachement header");
}
return fileName;
}
Let me know, if there is any standard solution to the above issue, Thank you.
Regards
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)