diff --git a/greenmail-core/src/main/java/com/icegreen/greenmail/store/SimpleMessageAttributes.java b/greenmail-core/src/main/java/com/icegreen/greenmail/store/SimpleMessageAttributes.java index 3815c648e..3d65e8bea 100644 --- a/greenmail-core/src/main/java/com/icegreen/greenmail/store/SimpleMessageAttributes.java +++ b/greenmail-core/src/main/java/com/icegreen/greenmail/store/SimpleMessageAttributes.java @@ -6,18 +6,19 @@ */ package com.icegreen.greenmail.store; - -import java.util.*; -import javax.mail.BodyPart; -import javax.mail.MessagingException; -import javax.mail.internet.*; - import com.icegreen.greenmail.mail.MailAddress; import com.icegreen.greenmail.util.GreenMailUtil; import com.sun.mail.imap.protocol.INTERNALDATE; +import javax.mail.BodyPart; +import javax.mail.MessagingException; +import javax.mail.internet.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; +import java.util.*; + /** * Attributes of a Message in IMAP4rev1 style. Message * Attributes should be set when a message enters a mailbox. @@ -371,7 +372,13 @@ private String parseAddress(String address) { String personal = netAddr.getPersonal(); if (personal != null && (personal.length() != 0)) { - buf.append(Q).append(personal).append(Q); + try { + String encodedPersonal = MimeUtility.encodeWord(personal, StandardCharsets.UTF_8.name(),null); + buf.append(Q).append(encodedPersonal).append(Q); + } catch (UnsupportedEncodingException e) { + log.warn("Failed to encode personal address part "+personal+" for "+netAddr+", using personal 'as is'"); + buf.append(Q).append(personal).append(Q); + } } else { buf.append(NIL); }