Java邮件发送失败问题记录与解决方案

更新于2024-11-05 08:00:007 分钟3 千字5691769600
摘要

1、背景

最近有访客在我之前的文章中评论想要交换友链,为了满足的访客朋友的需求,最近在紧锣密鼓地开发友链功能,并优化一下后端的代码。

本次对后端代码进行了较大的修改,改完之后,功能回归的时候发现邮件发送报错了,本文简单记录下报错信息和解决方案。

问题出现的原因并不清楚,之前功能还是正常的,也没有引入很多依赖,奇怪,有知道原因的朋友可以评论告知一下

2、报错信息

java.lang.IllegalAccessError: failed to access class com.sun.activation.registries.LogSupport from class javax.activation.MailcapCommandMap (com.sun.activation.registries.LogSupport and javax.activation.MailcapCommandMap are in unnamed module of loader 'app')
	at javax.activation.MailcapCommandMap.<init>(MailcapCommandMap.java:153) ~[activation-1.1.1.jar:1.1.1]
	at javax.activation.CommandMap.getDefaultCommandMap(CommandMap.java:74) ~[activation-1.1.1.jar:1.1.1]
	at javax.activation.DataHandler.getCommandMap(DataHandler.java:167) ~[activation-1.1.1.jar:1.1.1]
	at javax.activation.DataHandler.getDataContentHandler(DataHandler.java:625) ~[activation-1.1.1.jar:1.1.1]
	at javax.activation.DataHandler.writeTo(DataHandler.java:329) ~[activation-1.1.1.jar:1.1.1]
	at javax.mail.internet.MimeUtility.getEncoding(MimeUtility.java:261) ~[mail-1.4.1.jar:1.4.1]
	at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1321) ~[mail-1.4.1.jar:1.4.1]
	at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2074) ~[mail-1.4.1.jar:1.4.1]
	at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2042) ~[mail-1.4.1.jar:1.4.1]
	at javax.mail.Transport.send(Transport.java:117) ~[mail-1.4.1.jar:1.4.1]
	at com.izhxxx.utils.EmailUtils.sendMail(EmailUtils.java:81) ~[classes/:na]
	at com.izhxxx.service.blog.infrastructure.gateway.impl.EmailGatewayImpl.sendCommentEmail(EmailGatewayImpl.java:54) ~[classes/:na]
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) ~[spring-aop-6.0.3.jar:6.0.3]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) ~[spring-aop-6.0.3.jar:6.0.3]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-6.0.3.jar:6.0.3]
	at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115) ~[spring-aop-6.0.3.jar:6.0.3]
	at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317) ~[na:na]
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) ~[na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na]
	at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na]

3、解决方案

我一开始问chatgpt,告诉我可以引入下面这个依赖,但是试了下,并不可行

<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1</version>
</dependency>

最终的解决方案是引入下面这个依赖

    <dependency>
        <groupId>jakarta.mail</groupId>
        <artifactId>jakarta.mail-api</artifactId>
        <version>2.1.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.eclipse.angus</groupId>
        <artifactId>jakarta.mail</artifactId>
        <version>1.0.0</version>
    </dependency>

参考自:https://stackoverflow.com/questions/73034101/resolved-spring-boot-starter-mail-failed-to-access-class-com-sun-activation

4、最后

希望本文对你有所帮助!😄

本站的邮件功能已修复,并且友链功能已上线,欢迎朋友们使用👏

评论区

你认为这篇文章怎么样?
  • great
    0
  • happy
    0
  • doubt
    0
  • boring
    0
  • bad
    0

0/2048