You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

适配Jakarta与Java 17的org.apache.commons.mail.util.MimeMessageParser替代方案

解决方案:替代MimeMessageParser适配Jakarta Mail

方案1:升级Apache Commons Email到2.x版本

你可能没留意到,Apache Commons Email从2.0版本起已完成Jakarta EE迁移,完全适配jakarta.mail.internet.MimeMessage,不再依赖javax相关包。

1.5是Java EE时代的最后一个版本,直接升级到最新的2.x版本(比如2.0.1),原有的MimeMessageParser代码几乎无需修改就能正常运行。

方案2:直接用Jakarta Mail原生API解析

如果暂时不想升级依赖,可借助Jakarta Mail原生API手动解析MimeMessage,核心逻辑和MimeMessageParser一致:

import jakarta.mail.Part;
import jakarta.mail.internet.MimeMessage;
import jakarta.mail.internet.MimeMultipart;
import jakarta.mail.BodyPart;
import java.io.InputStream;

public class JakartaMimeParser {
    public static void parse(MimeMessage msg) throws Exception {
        // 获取邮件主题
        String subject = msg.getSubject();
        // 获取收件人列表
        String[] toRecipients = msg.getRecipients(MimeMessage.RecipientType.TO);
        
        // 解析邮件内容
        Object content = msg.getContent();
        if (content instanceof MimeMultipart multipart) {
            for (int i = 0; i < multipart.getCount(); i++) {
                BodyPart part = multipart.getBodyPart(i);
                if (part.isMimeType("text/plain")) {
                    String plainText = part.getContent().toString();
                    // 处理纯文本内容
                } else if (part.isMimeType("text/html")) {
                    String htmlContent = part.getContent().toString();
                    // 处理HTML内容
                } else if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) {
                    String fileName = part.getFileName();
                    InputStream attachmentStream = part.getInputStream();
                    // 处理附件
                }
            }
        } else {
            // 处理单一内容类型(如纯文本邮件)
            String simpleContent = content.toString();
        }
    }
}

方案3:自定义封装解析工具

如果需要和原MimeMessageParser类似的API风格,可以自己封装一个工具类,基于Jakarta Mail实现parse()、getPlainContent()、getHtmlContent()等常用方法,适配自身业务需求。

内容的提问来源于stack exchange,提问作者pinacolada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 02:05:03