3 года с опозданием, но если кто-то ударит по этому, я найду ответ:
MimeMessage message = new MimeMessage(mailSession);
Multipart multipart = new MimeMultipart("alternative");
BodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(new String(messageHtml.getBytes("UTF8"),"ISO-8859-1"), "text/html");
multipart.addBodyPart(htmlPart);
message.setContent(multipart);
message.setFrom(new InternetAddress(from));
message.setSubject(subject, "UTF-8");
Хитрость заключалась в том, чтобы преобразовать мой html из UTF-8 (так, как он получен из моих message_iw.properties), а затем преобразовать его в формат ISO, чтобы не нужно было устанавливать какие-либо заголовки.