Я только что перешел на Java 11 с Java 10 и начинаю получать исключение ниже, когда пытаюсь отправить электронное письмо:
javax.mail.MessagingException: Could not convert socket to TLS
at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:2155) ~[xxx-0.40.0-SNAPSHOT.jar:?]
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:752) ~[xxx-0.40.0-SNAPSHOT.jar:?]
at javax.mail.Service.connect(Service.java:366) ~[xxx-0.40.0-SNAPSHOT.jar:?]
at javax.mail.Service.connect(Service.java:246) ~[xxx-0.40.0-SNAPSHOT.jar:?]
at cc.blynk.server.notifications.mail.ThirdPartyMailClient.send(ThirdPartyMailClient.java:73) ~[xxx-0.40.0-SNAPSHOT.jar:?]
at cc.blynk.server.notifications.mail.ThirdPartyMailClient.sendHtml(ThirdPartyMailClient.java:62) ~[xxx-0.40.0-SNAPSHOT.jar:?]
at cc.blynk.server.notifications.mail.MailWrapper.sendHtml(MailWrapper.java:47) ~[xxx-0.40.0-SNAPSHOT.jar:?]
at cc.blynk.server.web.handlers.logic.organization.users.WebInviteUserLogic.lambda$messageReceived$0(WebInviteUserLogic.java:111) ~[xxx-0.40.0-SNAPSHOT.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
at java.lang.Thread.run(Thread.java:834) ~[?:?]
Caused by: java.io.IOException: Server is not trusted: smtp.gmail.com
at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:632) ~[xxx-0.40.0-SNAPSHOT.jar:?]
at com.sun.mail.util.SocketFetcher.startTLS(SocketFetcher.java:547) ~[xxx-0.40.0-SNAPSHOT.jar:?]
at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:2150) ~[xxx-0.40.0-SNAPSHOT.jar:?]
... 10 more
Этот код прекрасно работал на предыдущей версии Java:
java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
Новая версия Java:
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
Я нашел похожие вопросы и исправил ошибку, указанную выше:
mail.smtp.ssl.trust=smtp.gmail.com
собственность в моем mail.properties
.
Однако я хотел бы понять, почему эта ошибка происходит только в Java 11? Я думаю, что это как-то связано с удаленным javax.mail
модулем из Java. Я прав?
Это мои зависимости:
<javax.mail.version>1.6.1</javax.mail.version>
<javax.activation.version>1.2.0</javax.activation.version>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>${javax.mail.version}</version>
<exclusions>
<exclusion>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.sun.activation</groupId>
<artifactId>javax.activation</artifactId>
<version>${javax.activation.version}</version>
</dependency>