Limit MIME encode range in Content-Disposition to avoid over-encode
This commit is contained in:
parent
c66e94d0f6
commit
d7637154d8
2 changed files with 39 additions and 2 deletions
|
@ -257,7 +257,8 @@ public abstract class MessageBuilder {
|
|||
*/
|
||||
bp.addHeader(MimeHeader.HEADER_CONTENT_DISPOSITION, String.format(Locale.US,
|
||||
"attachment;\r\n filename=\"%s\";\r\n size=%d",
|
||||
attachment.name, attachment.size));
|
||||
EncoderUtil.encodeIfNecessary(attachment.name, EncoderUtil.Usage.WORD_ENTITY, 7),
|
||||
attachment.size));
|
||||
|
||||
mp.addBodyPart(bp);
|
||||
}
|
||||
|
|
|
@ -104,7 +104,31 @@ public class MessageBuilderTest extends RobolectricTest {
|
|||
"dGV4dCBkYXRhIGluIGF0dGFjaG1lbnQ=\r\n" +
|
||||
"\r\n" +
|
||||
"--" + BOUNDARY_1 + "--\r\n";
|
||||
|
||||
|
||||
public static final String ATTACHMENT_FILENAME_NON_ASCII = "テスト文書.txt";
|
||||
public static final String MESSAGE_CONTENT_WITH_ATTACH_NON_ASCII_FILENAME = "" +
|
||||
"Content-Type: multipart/mixed; boundary=\"" + BOUNDARY_1 + "\"\r\n" +
|
||||
"Content-Transfer-Encoding: 7bit\r\n" +
|
||||
"\r\n" +
|
||||
"--" + BOUNDARY_1 + "\r\n" +
|
||||
"Content-Type: text/plain;\r\n" +
|
||||
" charset=utf-8\r\n" +
|
||||
"Content-Transfer-Encoding: quoted-printable\r\n" +
|
||||
"\r\n" +
|
||||
"soviet message\r\n" +
|
||||
"text =E2=98=AD\r\n" +
|
||||
"--" + BOUNDARY_1 + "\r\n" +
|
||||
"Content-Type: text/plain;\r\n" +
|
||||
" name=\"=?UTF-8?B?44OG44K544OI5paH5pu4LnR4dA==?=\"\r\n" +
|
||||
"Content-Transfer-Encoding: base64\r\n" +
|
||||
"Content-Disposition: attachment;\r\n" +
|
||||
" filename=\"=?UTF-8?B?44OG44K544OI5paH5pu4LnR4dA==?=\";\r\n" +
|
||||
" size=23\r\n" +
|
||||
"\r\n" +
|
||||
"dGV4dCBkYXRhIGluIGF0dGFjaG1lbnQ=\r\n" +
|
||||
"\r\n" +
|
||||
"--" + BOUNDARY_1 + "--\r\n";
|
||||
|
||||
public static final String MESSAGE_CONTENT_WITH_MESSAGE_ATTACH = "" +
|
||||
"Content-Type: multipart/mixed; boundary=\"" + BOUNDARY_1 + "\"\r\n" +
|
||||
"Content-Transfer-Encoding: 7bit\r\n" +
|
||||
|
@ -174,6 +198,18 @@ public class MessageBuilderTest extends RobolectricTest {
|
|||
assertEquals(MESSAGE_HEADERS + MESSAGE_CONTENT_WITH_ATTACH, getMessageContents(message));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void build_withAttachment_nonAscii_shouldSucceed() throws Exception {
|
||||
MessageBuilder messageBuilder = createSimpleMessageBuilder();
|
||||
Attachment attachment = createAttachmentWithContent("text/plain", ATTACHMENT_FILENAME_NON_ASCII, TEST_ATTACHMENT_TEXT);
|
||||
messageBuilder.setAttachments(Collections.singletonList(attachment));
|
||||
|
||||
messageBuilder.buildAsync(callback);
|
||||
|
||||
MimeMessage message = getMessageFromCallback();
|
||||
assertEquals(MESSAGE_HEADERS + MESSAGE_CONTENT_WITH_ATTACH_NON_ASCII_FILENAME, getMessageContents(message));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void build_usingHtmlFormat_shouldUseMultipartAlternativeInCorrectOrder() {
|
||||
MessageBuilder messageBuilder = createHtmlMessageBuilder();
|
||||
|
|
Loading…
Reference in a new issue