From 2be4a63b13b785e774e3ba434c64a003523c4da3 Mon Sep 17 00:00:00 2001 From: Marcel May Date: Sat, 3 Sep 2022 14:19:19 +0200 Subject: [PATCH] Encoding of from and to fields (backport, fixes #480) Backport of #478 --- .../store/SimpleMessageAttributes.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) 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); }