bbottema / simple-java-mail

Simple API, Complex Emails (Jakarta Mail smtp wrapper)

Home Page:http://www.simplejavamail.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[bug] Fix parsing addresses from headers in EML files, like a Disposition-Notification-To with umlaut

Faelean opened this issue · comments

When the "Disposition-Notification-To" contains an umlaut the content is encoded like this:

Disposition-Notification-To:
	=?iso-8859-1?Q?K=F6nok=2C_Danny_=5BFake_Company_=26_Co=2E_K?=
 =?iso-8859-1?Q?G=5D?= <test@fakedomain.de>

the following error occurs when trying to convert it to an Email object:

        String emlFileName = ".\\assets_sjm\\T24-01123.EML";

        try (FileInputStream fileInputStream = new FileInputStream(emlFileName)) {

            Email email = EmailConverter.emlToEmail(fileInputStream);

            printResult(email, emlFileName);

        }
Exception in thread "main" org.simplejavamail.converter.internal.mimemessage.MimeMessageParseException: Error parsing [Disposition-Notification-To] address [Könok, Danny [Fake Company & Co. KG] <test@fakedomain.de>]
	at org.simplejavamail.converter.internal.mimemessage.MimeMessageParser.createAddress(MimeMessageParser.java:316)
	at org.simplejavamail.converter.internal.mimemessage.MimeMessageParser.parseHeader(MimeMessageParser.java:162)
	at org.simplejavamail.converter.internal.mimemessage.MimeMessageParser.parseMimePartTree(MimeMessageParser.java:94)
	at org.simplejavamail.converter.internal.mimemessage.MimeMessageParser.parseMimeMessage(MimeMessageParser.java:87)
	at org.simplejavamail.converter.EmailConverter.mimeMessageToEmailBuilder(EmailConverter.java:138)
	at org.simplejavamail.converter.EmailConverter.mimeMessageToEmailBuilder(EmailConverter.java:125)
	at org.simplejavamail.converter.EmailConverter.emlToEmailBuilder(EmailConverter.java:399)
	at org.simplejavamail.converter.EmailConverter.emlToEmailBuilder(EmailConverter.java:378)
	at org.simplejavamail.converter.EmailConverter.emlToEmail(EmailConverter.java:312)
	at org.simplejavamail.converter.EmailConverter.emlToE
mail(EmailConverter.java:304)
	at de.otris.documents.simplejavamail.SimpleJavaMailTests.main(SimpleJavaMailTests.java:18)
Caused by: jakarta.mail.internet.AddressException: Illegal address in string ``Könok, Danny [Fake Company & Co. KG] <test@fakedomain.de>''
	at jakarta.mail.internet.InternetAddress.<init>(InternetAddress.java:103)
	at org.simplejavamail.converter.internal.mimemessage.MimeMessageParser.createAddress(MimeMessageParser.java:311)
	... 10 more

This does not happen with "From", the same encoded content parses as expected.

I've attached an example mail where both "Disposition-Notification-To" and "From" contain umlauts: T24-01123.zip

Helpful as ever, I tracked down the issue easily thanks to your sample message.

I fixed it for Disposition-Notification-To, Return-Receipt-To and Return-Path (BounceTo address), as they all suffered from the same defect.

Fix released in 8.8.1. Thanks once again!