diff --git a/commons-email2-javax/src/test/java/org/apache/commons/mail2/javax/util/MimeMessageParserTest.java b/commons-email2-javax/src/test/java/org/apache/commons/mail2/javax/util/MimeMessageParserTest.java index bccba852d..33df512dd 100644 --- a/commons-email2-javax/src/test/java/org/apache/commons/mail2/javax/util/MimeMessageParserTest.java +++ b/commons-email2-javax/src/test/java/org/apache/commons/mail2/javax/util/MimeMessageParserTest.java @@ -23,10 +23,14 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.File; +import java.io.InputStream; +import org.apache.commons.io.IOUtils; import java.nio.file.Paths; import java.util.List; import java.util.Properties; +import java.nio.charset.StandardCharsets; + import javax.activation.DataSource; import javax.mail.Session; import javax.mail.internet.MimeMessage; @@ -469,4 +473,26 @@ void testParseSimpleReplyEmail() throws Exception { assertFalse(mimeMessageParser.hasAttachments()); } + @Test + void testParseMultipartEndingEmail() throws Exception { + final Session session = Session.getDefaultInstance(new Properties()); + final MimeMessage message = MimeMessageUtils.createMimeMessage(session, new File("./src/test/resources/eml/multipart-ending-boundary.eml")); + final MimeMessageParser mimeMessageParser = new MimeMessageParser(message); + + mimeMessageParser.parse(); + + assertTrue(mimeMessageParser.isMultipart()); + assertTrue(mimeMessageParser.hasAttachments()); + + final List attachmentList = mimeMessageParser.getAttachmentList(); + assertEquals(1, attachmentList.size()); + + final DataSource dataSource = mimeMessageParser.findAttachmentByName("test.txt"); + assertNotNull(dataSource); + assertEquals("text/plain", dataSource.getContentType()); + + InputStream inputStream = dataSource.getInputStream(); + String content = IOUtils.toString(inputStream, StandardCharsets.UTF_8); + assertEquals("test\n\n--------------010700020404090103050203--MORE", content); + } } diff --git a/commons-email2-javax/src/test/resources/eml/multipart-ending-boundary.eml b/commons-email2-javax/src/test/resources/eml/multipart-ending-boundary.eml new file mode 100644 index 000000000..193738e38 --- /dev/null +++ b/commons-email2-javax/src/test/resources/eml/multipart-ending-boundary.eml @@ -0,0 +1,22 @@ +Return-Path: +Message-ID: +Date: Fri, 02 Aug 2013 20:53:33 +0200 +From: test_from@apache.org +MIME-Version: 1.0 +To: test_to@apache.org +Subject: test +Content-Type: multipart/mixed; + boundary="------------010700020404090103050203" + +This is a multi-part message in MIME format. +--------------010700020404090103050203 +Content-Type: text/plain; charset=UTF-8; + name="test.txt" +Content-Transfer-Encoding: 7bit +Content-Disposition: attachment; + +test + +--------------010700020404090103050203--MORE + +--------------010700020404090103050203--