【问题标题】:JavaMail Add attachement to Mime body as base64JavaMail 将附件作为 base64 添加到 Mime 正文
【发布时间】:2016-11-15 09:38:17
【问题描述】:

我正在使用 JavaMail api 来发送电子邮件,但是当我发送带有附件的电子邮件时,我只想发送附件 base64 视图。这是我实现的代码,它工作正常,但有时附件没有转换为 base64。

private static Multipart createMultipartMixed(Email email, List<File> attachmentFiles, Context context) throws MessagingException {
Multipart multipartMixed = new MimeMultipart("mixed");

MimeBodyPart multipartAlternativeBodyPart = new MimeBodyPart();
multipartAlternativeBodyPart.setContent(createMultipartAlternative(email, context));
multipartMixed.addBodyPart(multipartAlternativeBodyPart);

for (File file : attachmentFiles) {
    MimeBodyPart attachFilePart = createAttachmentBodyPart(file, true, null);
    multipartMixed.addBodyPart(attachFilePart);
}

return multipartMixed;
}

private static MimeBodyPart createAttachmentBodyPart(File file, boolean isAttachmentDisposition, String cid)
        throws MessagingException {
MimeBodyPart attachFilePart = new MimeBodyPart();
FileDataSource fds = new FileDataSource(file.getAbsolutePath());
attachFilePart.setDataHandler(new DataHandler(fds));
try {
    attachFilePart.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8", "B"));
    if(isAttachmentDisposition) {
        attachFilePart.setDisposition(Part.ATTACHMENT);

    } else {
        attachFilePart.setDisposition(Part.INLINE);
        attachFilePart.setContentID("<" + cid + ">");
    }
} catch (UnsupportedEncodingException e) {
    LOGGER.error("UnsupportedEncodingException: " + e.getMessage());
    e.printStackTrace();
    attachFilePart.setFileName(fds.getName());
}
return attachFilePart;

}

为什么有时附件不在 Mime 文件的 base64 视图中?提前谢谢你

【问题讨论】:

    标签: java android base64 jakarta-mail email-attachments


    【解决方案1】:

    JavaMail 根据正文部分的实际内容选择Content-Transfer-Encoding。如果内容主要是文本,则不会使用 base64。

    如果出于某种原因强制它选择 base64(例如,消息将由始终期望附件采用 base64 编码的损坏程序处理),您可以强制选择传输编码:

    attachFilePart.setHeader("Content-Transfer-Encoding", "base64");
    

    【讨论】:

    • 非常感谢@Bill Shannon,我正在尝试 addHeader 但它不起作用。
    猜你喜欢
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多