Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bugfix: Fix support for reading Calendar attachments #281

Closed
lasombra opened this issue Jul 30, 2020 · 3 comments
Closed

Bugfix: Fix support for reading Calendar attachments #281

lasombra opened this issue Jul 30, 2020 · 3 comments

Comments

@lasombra
Copy link

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
@bbottema
Copy link
Owner

bbottema commented Aug 3, 2020

I reproduced it with a basic junit test. Somehow didn't come to surface earlier. Fixing asap.

@bbottema bbottema added this to the 6.4.2 milestone Aug 3, 2020
@bbottema
Copy link
Owner

bbottema commented Aug 3, 2020

Fix released in 6.4.2. Thanks for the report!

@bbottema bbottema closed this as completed Aug 3, 2020
@lasombra
Copy link
Author

lasombra commented Aug 5, 2020

You're a star, thanks mate :)

@bbottema bbottema changed the title emlToEmail conversion fails when parsing "text/calendar" attachment Bugfix: Fix support for reading Calendar attachments Oct 25, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants