public static void setBody(Part part, Body body) throws MessagingException {
part.setBody(body);
if (part instanceof Message) {
part.setHeader("MIME-Version", "1.0");
}
if (body instanceof Multipart) {
Multipart multipart = ((Multipart) body);
multipart.setParent(part);
String contentType = Headers.contentTypeForMultipart(multipart.getMimeType(), multipart.getBoundary());
part.setHeader(MimeHeader.HEADER_CONTENT_TYPE, contentType);
setEncoding(part, MimeUtil.ENC_7BIT);
} else if (body instanceof TextBody) {
MimeValue contentTypeHeader = MimeParameterDecoder.decode(part.getContentType());
String mimeType = contentTypeHeader.getValue();
if (MimeUtility.mimeTypeMatches(mimeType, "text/*")) {
String name = contentTypeHeader.getParameters().get("name");
String contentType = Headers.contentType(mimeType, "utf-8", name);
part.setHeader(MimeHeader.HEADER_CONTENT_TYPE, contentType);
} else {
part.setHeader(MimeHeader.HEADER_CONTENT_TYPE, mimeType);
}
setEncoding(part, MimeUtil.ENC_QUOTED_PRINTABLE);
} else if (body instanceof RawDataBody) {
String encoding = ((RawDataBody) body).getEncoding();
part.setHeader(MimeHeader.HEADER_CONTENT_TRANSFER_ENCODING, encoding);
}
}