use of com.fsck.k9.mail.MimeType in project k-9 by k9mail.
the class MessageFulltextCreator method createFulltext.
public String createFulltext(@NonNull Message message) {
Part textPart = textPartFinder.findFirstTextPart(message);
if (textPart == null || hasEmptyBody(textPart)) {
return null;
}
String text = MessageExtractor.getTextFromPart(textPart, MAX_CHARACTERS_CHECKED_FOR_FTS);
String mimeType = textPart.getMimeType();
if (!MimeUtility.isSameMimeType(mimeType, "text/html")) {
return text;
}
return HtmlConverter.htmlToText(text);
}
use of com.fsck.k9.mail.MimeType in project k-9 by k9mail.
the class TextPartFinder method findTextPartInMultipart.
private Part findTextPartInMultipart(Multipart multipart) {
for (BodyPart bodyPart : multipart.getBodyParts()) {
String mimeType = bodyPart.getMimeType();
Body body = bodyPart.getBody();
if (body instanceof Multipart) {
Part candidatePart = findFirstTextPart(bodyPart);
if (candidatePart != null) {
return candidatePart;
}
} else if (isSameMimeType(mimeType, "text/plain") || isSameMimeType(mimeType, "text/html")) {
return bodyPart;
}
}
return null;
}
use of com.fsck.k9.mail.MimeType in project k-9 by k9mail.
the class TextPartFinder method findFirstTextPart.
@Nullable
public Part findFirstTextPart(@NonNull Part part) {
String mimeType = part.getMimeType();
Body body = part.getBody();
if (body instanceof Multipart) {
Multipart multipart = (Multipart) body;
if (isSameMimeType(mimeType, "multipart/alternative")) {
return findTextPartInMultipartAlternative(multipart);
} else {
return findTextPartInMultipart(multipart);
}
} else if (isSameMimeType(mimeType, "text/plain") || isSameMimeType(mimeType, "text/html")) {
return part;
}
return null;
}
use of com.fsck.k9.mail.MimeType in project k-9 by k9mail.
the class MimeBodyPart method getMimeType.
@Override
public String getMimeType() {
String mimeTypeFromHeader = MimeUtility.getHeaderParameter(getContentType(), null);
MimeType mimeType = MimeType.parseOrNull(mimeTypeFromHeader);
return mimeType != null ? mimeType.toString() : getDefaultMimeType();
}
use of com.fsck.k9.mail.MimeType in project k-9 by k9mail.
the class MimeMessageHelper method setBody.
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);
// note: if this is ever changed to 8bit, multipart/signed parts must always be 7bit!
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);
}
}
Aggregations