in dom/src/main/java/org/apache/james/mime4j/message/DefaultBodyDescriptorBuilder.java [105:146]
public BodyDescriptor build() {
String actualMimeType = null;
String actualMediaType = null;
String actualSubType = null;
String actualCharset = null;
String actualBoundary = null;
ContentTypeField contentTypeField = (ContentTypeField) fields.get(CONTENT_TYPE);
if (contentTypeField != null) {
actualMimeType = contentTypeField.getMimeType();
actualMediaType = contentTypeField.getMediaType();
actualSubType = contentTypeField.getSubType();
actualCharset = contentTypeField.getCharset();
actualBoundary = contentTypeField.getBoundary();
boolean multipart = actualMediaType != null && actualMediaType.equalsIgnoreCase("multipart");
if (multipart && actualBoundary == null) {
actualMimeType = null;
actualMediaType = null;
actualSubType = null;
}
}
if (actualMimeType == null) {
if (MimeUtil.isSameMimeType("multipart/digest", parentMimeType)) {
actualMimeType = EMAIL_MESSAGE_MIME_TYPE;
actualMediaType = MEDIA_TYPE_MESSAGE;
actualSubType = SUB_TYPE_EMAIL;
} else {
actualMimeType = DEFAULT_MIME_TYPE;
actualMediaType = DEFAULT_MEDIA_TYPE;
actualSubType = DEFAULT_SUB_TYPE;
}
}
if (actualCharset == null && MEDIA_TYPE_TEXT.equals(actualMediaType)) {
actualCharset = defaultCharset.name();
}
if (!MimeUtil.isMultipart(actualMimeType)) {
actualBoundary = null;
}
return new MaximalBodyDescriptor(
actualMimeType, actualMediaType, actualSubType, actualBoundary, actualCharset,
fields);
}