You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
We are using the mail-api to parse incoming emails (MimeMessages), we received a particular email with a PDF attachment.
The filename of this attachment is encoded in the Content-Disposition header in a "weird" way.
This leads to the following exception
Stacktrace:
Caused by: jakarta.mail.internet.ParseException: In parameter list <;
filename==?utf-8?Q?XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--111111111-XXXXXXXXXXXXXXXXXXX?=
=?utf-8?Q?XXXXXXXXXXXXXXXXXXX=2Epdf?=;
filename*0*=utf-8''XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--111111111-XXXXXXXXXXX;
filename*1*=XXXXXXXXXXXXXXXXXXXXXXXXXXX.pdf>, expected parameter value, got "="
at jakarta.mail.internet.ParameterList.<init>(ParameterList.java:273)
at jakarta.mail.internet.ContentDisposition.<init>(ContentDisposition.java:86)
at jakarta.mail.internet.MimeBodyPart.getDisposition(MimeBodyPart.java:1239)
at jakarta.mail.internet.MimeBodyPart.getDisposition(MimeBodyPart.java:327)
According to RFC 2231 which updates 2047 and explicitly allows using encoding definition in the Content-Disposition header, it is required to inform the client about encoding in parameter value being used through the usage of the * in the parameter name (see the definition od extended-parameter/extended-initial-name in the grammar), so in this particular case, the header should contain:
filename*==?utf-8?Q?XX...
Also would it be possible to share full header definition for which it fails for you? Thanks
jakarta.mail.internet.ParseException: In parameter list <; filename="=?UTF-8?B?aW1hZ2UwMDEucG5n?="; n
ame="=?UTF-8?B?aW1hZ2UwMDEucG5n?=">, expected '=', got "ame"
at jakarta.mail.internet.ParameterList.<init>(ParameterList.java:255)
at jakarta.mail.internet.ContentDisposition.<init>(ContentDisposition.java:81)
at jakarta.mail.internet.MimeBodyPart.getDisposition(MimeBodyPart.java:1219)
at jakarta.mail.internet.MimeBodyPart.getDisposition(MimeBodyPart.java:325)
I assume it's because the header is multiline.
The Java String looks like:
Describe the bug
We are using the mail-api to parse incoming emails (MimeMessages), we received a particular email with a PDF attachment.
The filename of this attachment is encoded in the Content-Disposition header in a "weird" way.
This leads to the following exception
Stacktrace:
After googling I found that the header is encoded in "Q encoding" (https://en.wikipedia.org/wiki/MIME#Difference_between_Q-encoding_and_quoted-printable) It is also mentioned in RFC2047 (https://www.ietf.org/rfc/rfc2047.txt).
The method jakarta.mail.internet.MimeUtility.decodeText(String etext) is actually able to parse such strings.
To Reproduce
See test cases in attached pull request #688
Expected behavior
See test cases in attached pull request #688
Envorinment:
The text was updated successfully, but these errors were encountered: