diff --git a/app/src/main/java/com/sun/mail/imap/IMAPBodyPart.java b/app/src/main/java/com/sun/mail/imap/IMAPBodyPart.java index 181bb94512..20436b59eb 100644 --- a/app/src/main/java/com/sun/mail/imap/IMAPBodyPart.java +++ b/app/src/main/java/com/sun/mail/imap/IMAPBodyPart.java @@ -294,7 +294,8 @@ public class IMAPBodyPart extends MimeBodyPart implements ReadableMime { ); else if (bs.isNested() && message.isREV1() && bs.envelope != null) dh = new DataHandler( - new IMAPNestedMessage(message, + new IMAPNestedMessage(message, + bs.encoding, bs.bodies[0], bs.envelope, sectionId), diff --git a/app/src/main/java/com/sun/mail/imap/IMAPMessage.java b/app/src/main/java/com/sun/mail/imap/IMAPMessage.java index c6004f3067..a5a03099ba 100644 --- a/app/src/main/java/com/sun/mail/imap/IMAPMessage.java +++ b/app/src/main/java/com/sun/mail/imap/IMAPMessage.java @@ -830,7 +830,8 @@ public class IMAPMessage extends MimeMessage implements ReadableMime { * FETCH the components of nested messages */ dh = new DataHandler( - new IMAPNestedMessage(this, + new IMAPNestedMessage(this, + bs.encoding, bs.bodies[0], bs.envelope, sectionId == null ? "1" : sectionId + ".1"), @@ -912,6 +913,11 @@ public class IMAPMessage extends MimeMessage implements ReadableMime { return; } InputStream is = getMimeStream(); + if (this instanceof IMAPNestedMessage) { + String encoding = getEncoding(); + if (encoding != null) + is = MimeUtility.decode(is, encoding); + } try { // write out the bytes byte[] bytes = new byte[16*1024]; diff --git a/app/src/main/java/com/sun/mail/imap/IMAPNestedMessage.java b/app/src/main/java/com/sun/mail/imap/IMAPNestedMessage.java index 12cd4e453a..b9e97975ab 100644 --- a/app/src/main/java/com/sun/mail/imap/IMAPNestedMessage.java +++ b/app/src/main/java/com/sun/mail/imap/IMAPNestedMessage.java @@ -29,6 +29,7 @@ import com.sun.mail.iap.ProtocolException; public class IMAPNestedMessage extends IMAPMessage { private IMAPMessage msg; // the enclosure of this nested message + private String encoding; /** * Package private constructor.

@@ -36,9 +37,10 @@ public class IMAPNestedMessage extends IMAPMessage { * Note that nested messages have no containing folder, nor * a message number. */ - IMAPNestedMessage(IMAPMessage m, BODYSTRUCTURE b, ENVELOPE e, String sid) { + IMAPNestedMessage(IMAPMessage m, String enc, BODYSTRUCTURE b, ENVELOPE e, String sid) { super(m._getSession()); msg = m; + encoding = enc; bs = b; envelope = e; sectionId = sid; @@ -124,6 +126,11 @@ public class IMAPNestedMessage extends IMAPMessage { return bs.size; } + @Override + public String getEncoding() { + return encoding; + } + /* * Disallow setting flags on nested messages */