使用JavaMail发送邮件出现 java.lang.UnsupportedOperationException: Method not yet implemented

本文解决了一个在测试环境中因jar包冲突导致的邮件发送失败问题,通过排除特定依赖解决了MimeMessage类的冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于最近业务需求,需要添加一个预警发送邮件功能。本地采用Main方法跑一切正常,推到测试环境则会出现以下报错信息:

java.lang.UnsupportedOperationException: Method not yet implemented
        at javax.mail.internet.MimeMessage.<init>(MimeMessage.java:89)
        at com.xx.xx.util.mail.MailSender.createMsg(MailSender.java:86)
        at com.xx.xx.util.mail.MailSender.send(MailSender.java:193)
        at com.xx.xx.util.MailUtils.sendMail(MailUtils.java:64)
        at com.xx.xx.util.MailUtils.sendSyncTaskStopMail(MailUtils.java:31)
        at com.xx.xx.task.SendMailTask.run(SendMailTask.java:35)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)

然后就查了一下,定位问题是maven中的 geronimo-spec-javamail jar包的问题,继续查了一下,在项目中运行 mvn dependency:tree ,可以看到 maven 生成的依赖树。如下片段:

[INFO] +- com.cloudhopper.proxool:proxool:jar:0.9.1:compile 
[INFO] | \- avalon-framework:avalon-framework-api:jar:4.3:compile 
[INFO] | \- avalon-logkit:avalon-logkit:jar:2.1:compile 
[INFO] | +- geronimo-spec:geronimo-spec-javamail:jar:1.3.1-rc3:compile 
​​​​​​​[INFO] | \- geronimo-spec:geronimo-spec-jms:jar:1.1-rc4:compile

博主出问题的是因为 MineMessage类所依赖的包有多个,

邮件mail-1.6.2.jar与数据库连接池包proxool-0.9.1.jar都有MineMessage类照成报冲突,导致Session创建失败

解决方案:需要在 pom.xml 中引入 proxool 的引用中加上 excluded 标签,如下:

<dependency>
	<groupId>com.cloudhopper.proxool</groupId>
    <artifactId>proxool</artifactId>
    <version>0.9.1</version>
    <!-- 这个就是我们要排除依赖包,解决jar包冲突 -->
    <exclusions>
            <exclusion>
                    <groupId>geronimo-spec</groupId>
                    <artifactId>geronimo-spec-javamail</artifactId>
            </exclusion>
            <exclusion>
                    <groupId>geronimo-spec</groupId>
                    <artifactId>geronimo-spec-jms</artifactId>
            </exclusion>
    </exclusions>
</dependency>

按照上面进行改之后,在对应测试环境发送邮件一切都OK,^_^。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值