gpt4 book ai didi

java - 使用smtp gmail发送邮件

转载 作者:行者123 更新时间:2023-12-01 19:07:06 25 4
gpt4 key购买 nike

我想知道如何从java程序发送邮件。我写的java邮件程序没有什么问题。但我不知道 SMTP 端口 465,即使我使用 g 邮件服务器端口 465。我想知道我的计算机是否需要启用任何选项。请让我一步步知道需要什么我正在使用 Windows 7 并且想要使用 Gmail 服务器..

您的努力将非常值得感激。

请告诉我以下内容有任何错误吗?

Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
nested exception is:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed
at mail1.SendMailSSL.main(SendMailSSL.java:44)
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
nested exception is:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1706)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:525)
at javax.mail.Service.connect(Service.java:310)
at javax.mail.Service.connect(Service.java:169)
at javax.mail.Service.connect(Service.java:118)
at javax.mail.Transport.send0(Transport.java:188)
at javax.mail.Transport.send(Transport.java:118)
at mail1.SendMailSSL.main(SendMailSSL.java:39)
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1611)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:187)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:181)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1035)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:124)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:516)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:454)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1112)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1139)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1123)
at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:503)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:234)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1672)

最佳答案

这个解决方案非常适合我。您需要将 GMail smtp 服务器证书导入到您的信任库中

  1. 使用 openssl 命令获取 Gmail smtp 服务器证书

    “s_client -connect smtp.gmail.com:465”

  2. 将“-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”之间的输出(包括该前缀/后缀)保存到文件“gmail.txt”中。证书”

  3. 将此证书文件导入到您的 keystore 中(对于 Linux,需要 sudo)

    keytool -import -alias smtp.gmail.com -keystore "%JAVA_HOME%/jre/lib/security/cacerts"-file gmail.cert

  4. 重新启动 Java 应用程序以传播更改

致谢:http://notepad2.blogspot.com/2012/04/import-gmail-certificate-into-java.html

OpenSSL 可以在这里下载:http://gnuwin32.sourceforge.net/packages/openssl.htm

关于java - 使用smtp gmail发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9644163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com