Почему я получаю сообщение «java.io.IOException: сервер не является доверенным» при попытке отправить сообщение электронной почты после перехода на Java 11? - PullRequest
0 голосов
/ 30 октября 2018

Я только что перешел на 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>
...