mirror of https://github.com/moparisthebest/k-9
53 lines
1.7 KiB
Java
53 lines
1.7 KiB
Java
package com.fsck.k9.mail.internet;
|
|
|
|
|
|
import com.fsck.k9.mail.Body;
|
|
import com.fsck.k9.mail.Message;
|
|
import com.fsck.k9.mail.MessagingException;
|
|
import com.fsck.k9.mail.Multipart;
|
|
import com.fsck.k9.mail.Part;
|
|
import org.apache.james.mime4j.util.MimeUtil;
|
|
|
|
|
|
public class MimeMessageHelper {
|
|
private MimeMessageHelper() {
|
|
}
|
|
|
|
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 type = multipart.getContentType();
|
|
part.setHeader(MimeHeader.HEADER_CONTENT_TYPE, type);
|
|
if ("multipart/signed".equalsIgnoreCase(type)) {
|
|
setEncoding(part, MimeUtil.ENC_7BIT);
|
|
} else {
|
|
setEncoding(part, MimeUtil.ENC_8BIT);
|
|
}
|
|
} else if (body instanceof TextBody) {
|
|
String contentType = String.format("%s;\r\n charset=utf-8", part.getMimeType());
|
|
String name = MimeUtility.getHeaderParameter(part.getContentType(), "name");
|
|
if (name != null) {
|
|
contentType += String.format(";\r\n name=\"%s\"", name);
|
|
}
|
|
part.setHeader(MimeHeader.HEADER_CONTENT_TYPE, contentType);
|
|
|
|
setEncoding(part, MimeUtil.ENC_8BIT);
|
|
}
|
|
}
|
|
|
|
public static void setEncoding(Part part, String encoding) throws MessagingException {
|
|
Body body = part.getBody();
|
|
if (body != null) {
|
|
body.setEncoding(encoding);
|
|
}
|
|
part.setHeader(MimeHeader.HEADER_CONTENT_TRANSFER_ENCODING, encoding);
|
|
}
|
|
}
|