java 邮件 api (1.5.3) 在最近的 jre1.8.25 中不工作
java mail api (1.5.3) not working in recent jre1.8.25
我在应用程序中使用 javamail 发送邮件。一切正常。但是当我将运行时更改为 jre1.8.25 时,出现异常
nested exception is:
javax.net.ssl.SSLKeyException: RSA premaster secret error
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2056)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:697)
at javax.mail.Service.connect(Service.java:364)
at MainClass.main(MainClass.java:44)
Caused by: javax.net.ssl.SSLKeyException: RSA premaster secret error
at sun.security.ssl.RSAClientKeyExchange.<init>(RSAClientKeyExchange.java:86)
at sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:880)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:344)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:936)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:871)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1043)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1343)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1371)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:574)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:369)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:236)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2020)
... 3 more
Caused by: java.security.NoSuchAlgorithmException: SunTlsRsaPremasterSecret KeyGenerator not available
at javax.crypto.KeyGenerator.<init>(KeyGenerator.java:158)
at javax.crypto.KeyGenerator.getInstance(KeyGenerator.java:207)
at sun.security.ssl.JsseJce.getKeyGenerator(JsseJce.java:272)
at sun.security.ssl.RSAClientKeyExchange.<init>(RSAClientKeyExchange.java:77)
... 15 more
注意:我只使用最新版本的 javamail api。
确保正确的 sunjce_provider.jar
在类路径中。如果它在 $JAVA_HOME/lib/ext/
中,那么 Java 应该会自动找到它。
另请参阅:
- SunTlsRsaPremasterSecret KeyGenerator not available
我在应用程序中使用 javamail 发送邮件。一切正常。但是当我将运行时更改为 jre1.8.25 时,出现异常
nested exception is:
javax.net.ssl.SSLKeyException: RSA premaster secret error
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2056)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:697)
at javax.mail.Service.connect(Service.java:364)
at MainClass.main(MainClass.java:44)
Caused by: javax.net.ssl.SSLKeyException: RSA premaster secret error
at sun.security.ssl.RSAClientKeyExchange.<init>(RSAClientKeyExchange.java:86)
at sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:880)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:344)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:936)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:871)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1043)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1343)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1371)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:574)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:369)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:236)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2020)
... 3 more
Caused by: java.security.NoSuchAlgorithmException: SunTlsRsaPremasterSecret KeyGenerator not available
at javax.crypto.KeyGenerator.<init>(KeyGenerator.java:158)
at javax.crypto.KeyGenerator.getInstance(KeyGenerator.java:207)
at sun.security.ssl.JsseJce.getKeyGenerator(JsseJce.java:272)
at sun.security.ssl.RSAClientKeyExchange.<init>(RSAClientKeyExchange.java:77)
... 15 more
注意:我只使用最新版本的 javamail api。
确保正确的 sunjce_provider.jar
在类路径中。如果它在 $JAVA_HOME/lib/ext/
中,那么 Java 应该会自动找到它。
另请参阅:
- SunTlsRsaPremasterSecret KeyGenerator not available