Baru-baru ini, saya menghadapi masalah semasa melakukan Java Mail SSL: menggunakan JavaMail untuk menerima e-mel tidak boleh berjaya selepas sistem berjalan untuk tempoh masa tertentu
Mesej ralat adalah seperti berikut:
javax.mail. MessagingException: Sambungan gagal;
pengecualian bersarang ialah:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: pembinaan laluan PKIX gagal: sun.security.provider.certpath.SunCertPathBuilderException: laluan pensijilan ke sasaran yang diminta
di com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:148)
at javax.mail.Service.connect(Service.java:275)
at javax .mail.Service.connect(Service. java:156)
at javax.mail.Service.connect(Service.java:105)
Atau pelayan mel yang tidak mendayakan SSL mempunyai ralat berikut:
pengecualian bersarang ialah:
java.net.ConnectException : Sambungan ditolak
di com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:148)
Telnet ke pelayan mel. Tidak ada masalah dengan nama pengguna dan kata laluan Nampaknya hanya ada masalah program.
Properties props = System.getProperties() telah digunakan semasa membuat MailSession, saya mendapati ralat pengesahan SSL tidak sepatutnya digunakan, tetapi maklumat pengesahan tidak sepatutnya muncul, jadi sekarang Jika anda tidak memerlukan pautan SSL setiap kali anda menyambung ke POP3, alih keluar atribut ini dan masalah akan hilang.
Akhirnya saya tahu siapa yang menukar System.getProperties(); Ternyata terdapat sistem lain yang dijalankan dalam Tomcat yang sama Pelayan mel yang digunakan oleh sistem itu menggunakan pengesahan SSL untuk menghantar dan menerima e-mel, dan akan menerima e-mel sekali 30 minit Kerana program ini tidak ditulis dengan cukup teliti, ralat di atas berlaku Selepas memperbaiki program, kedua-dua sistem akhirnya boleh wujud bersama dalam satu TOMCAT.
Atas ialah kandungan terperinci Bagaimana untuk menggunakan kedua-dua sambungan SSL dan bukan SSL dalam Java Mail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!