Bugfix: Fix support for reading Calendar attachments
lasombra opened this issue · comments
LaSombra commented
Hi,
While experimenting with Simple Java Mail to read Message-ID
fields from a Maildir store, when conversing a mail file, which contains a text/calendar
attachment, using EmailConverter.emlToEmail(InputStream)
, I am greeted with the following exception when running on Java 11+:
java.lang.ClassCastException: class javax.mail.util.SharedByteArrayInputStream cannot be cast to class java.lang.String (javax.m
ail.util.SharedByteArrayInputStream is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'boo
tstrap')
at org.simplejavamail.converter.internal.mimemessage.MimeMessageParser.parseMimePartTree(MimeMessageParser.java:158)
at org.simplejavamail.converter.internal.mimemessage.MimeMessageParser.parseMimePartTree(MimeMessageParser.java:163)
at org.simplejavamail.converter.internal.mimemessage.MimeMessageParser.parseMimePartTree(MimeMessageParser.java:163)
at org.simplejavamail.converter.internal.mimemessage.MimeMessageParser.parseMimeMessage(MimeMessageParser.java:139)
at org.simplejavamail.converter.EmailConverter.mimeMessageToEmailBuilder(EmailConverter.java:118)
at org.simplejavamail.converter.EmailConverter.emlToEmailBuilder(EmailConverter.java:374)
at org.simplejavamail.converter.EmailConverter.emlToEmailBuilder(EmailConverter.java:353)
at org.simplejavamail.converter.EmailConverter.emlToEmail(EmailConverter.java:287)
at org.simplejavamail.converter.EmailConverter.emlToEmail(EmailConverter.java:279)
at cx.hoffmann.maildir.Main$1.visitFile(Main.java:48)
at cx.hoffmann.maildir.Main$1.visitFile(Main.java:44)
at java.base/java.nio.file.Files.walkFileTree(Files.java:2724)
at cx.hoffmann.maildir.Main.call(Main.java:44)
at cx.hoffmann.maildir.Main.call(Main.java:18)
at picocli.CommandLine.executeUserObject(CommandLine.java:1933)
at picocli.CommandLine.access$1100(CommandLine.java:145)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2332)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2326)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2291)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2159)
at picocli.CommandLine.execute(CommandLine.java
On Java 8 the exception is:
java.lang.ClassCastException: javax.mail.util.SharedByteArrayInputStream cannot be cast to java.lang.String
at org.simplejavamail.converter.internal.mimemessage.MimeMessageParser.parseMimePartTree(MimeMessageParser.java:158)
at org.simplejavamail.converter.internal.mimemessage.MimeMessageParser.parseMimePartTree(MimeMessageParser.java:163)
at org.simplejavamail.converter.internal.mimemessage.MimeMessageParser.parseMimePartTree(MimeMessageParser.java:163)
at org.simplejavamail.converter.internal.mimemessage.MimeMessageParser.parseMimeMessage(MimeMessageParser.java:139)
at org.simplejavamail.converter.EmailConverter.mimeMessageToEmailBuilder(EmailConverter.java:118)
at org.simplejavamail.converter.EmailConverter.emlToEmailBuilder(EmailConverter.java:374)
at org.simplejavamail.converter.EmailConverter.emlToEmailBuilder(EmailConverter.java:353)
at org.simplejavamail.converter.EmailConverter.emlToEmail(EmailConverter.java:287)
at org.simplejavamail.converter.EmailConverter.emlToEmail(EmailConverter.java:279)
at cx.hoffmann.maildir.Main$1.visitFile(Main.java:48)
at cx.hoffmann.maildir.Main$1.visitFile(Main.java:44)
at java.nio.file.Files.walkFileTree(Files.java:2670)
at cx.hoffmann.maildir.Main.call(Main.java:44)
at cx.hoffmann.maildir.Main.call(Main.java:18)
at picocli.CommandLine.executeUserObject(CommandLine.java:1933)
at picocli.CommandLine.access$1100(CommandLine.java:145)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2332)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2326)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2291)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2159)
at picocli.CommandLine.execute(CommandLine.java:2058)
at cx.hoffmann.maildir.Main.main(Main.java:29)
Unfortunately I can't provide the e-mail file or scrub it, but the multipart header is:
--f4030438886cb92783054e899918
Content-Type: text/calendar; charset=UTF-8; method=CANCEL
Content-Transfer-Encoding: 7bit
Benny Bottema commented
I reproduced it with a basic junit test. Somehow didn't come to surface earlier. Fixing asap.
Benny Bottema commented
Fix released in 6.4.2. Thanks for the report!
LaSombra commented
You're a star, thanks mate :)