bbottema/simple-java-mail

Bug: IllegalArgumentException on parsing empty header name and value (when parsing Outlook message)

piu130 opened this issue · 3 comments

piu130 commented

When parsing msgs, sometimes there is an empty header at the beginning. parseHeader then crashes, because of the empty name.
I cannot provide the email, since it's from production. Here is a screenshot of the first few headers:
image
As you can see, the name and value is blank.

As a fix, I would suggest to ignore headers with blank name+value.

What do you think?

Relevant code.

Stacktrace when calling org.simplejavamail.converter.EmailConverter.outlookMsgToEmail:

Suppressed: java.lang.IllegalArgumentException: name is required
	at org.simplejavamail.internal.util.Preconditions.verifyNonnullOrEmpty(Preconditions.java:49)
	at org.simplejavamail.internal.util.Preconditions.checkNonEmptyArgument(Preconditions.java:30)
	at org.simplejavamail.email.internal.EmailPopulatingBuilderImpl.withHeader(EmailPopulatingBuilderImpl.java:1705)
	at org.simplejavamail.email.internal.EmailPopulatingBuilderImpl.withHeader(EmailPopulatingBuilderImpl.java:1697)
	at org.simplejavamail.internal.outlooksupport.converter.OutlookEmailConverter.parseHeader(OutlookEmailConverter.java:156)
	at org.simplejavamail.internal.outlooksupport.converter.OutlookEmailConverter.lambda$null$0(OutlookEmailConverter.java:104)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.simplejavamail.internal.outlooksupport.converter.OutlookEmailConverter.lambda$buildEmailFromOutlookMessage$1(OutlookEmailConverter.java:104)
	at java.base/java.util.HashMap.forEach(HashMap.java:1421)
	at org.simplejavamail.internal.outlooksupport.converter.OutlookEmailConverter.buildEmailFromOutlookMessage(OutlookEmailConverter.java:104)
	at org.simplejavamail.internal.outlooksupport.converter.OutlookEmailConverter.outlookMsgToEmailBuilder(OutlookEmailConverter.java:89)
	at org.simplejavamail.converter.EmailConverter.outlookMsgToEmailBuilder(EmailConverter.java:245)
	at org.simplejavamail.converter.EmailConverter.outlookMsgToEmail(EmailConverter.java:227)
	at org.simplejavamail.converter.EmailConverter.outlookMsgToEmail(EmailConverter.java:219)

Agreed, when parsing the MimeMessage, empty/invalid headers should just be ignored.

Fix released in 8.0.0. Please let me know if this works for you!

piu130 commented

Thank you very much for the fast fix @bbottema . It works now :)