javax.mail.MessagingException:无法在JAVA中将套接字转换为TLS异常

时间:2017-03-31 15:03:11

标签: java sockets javamail

我想通过点击JFrame netbeans中的按钮从我的电子邮件地址向另一个电子邮件地址发送邮件。这是代码,

    DatabaseReference timeRef = FirebaseDatabase.getInstance().getReference("time-test");

    timeRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                long time = dataSnapshot.getValue(Long.class);
                String s = DateFormat.getDateTimeInstance().format(new Date(time));
                Log.d(TAG, "onDataChange: " + s);
            } else {
                Log.d(TAG, "onDataChange: No data");
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            throw databaseError.toException();
        }
    });

    timeRef.setValue(ServerValue.TIMESTAMP);

但它给了我以下错误,

javax.mail.MessagingException:无法将套接字转换为TLS;嵌套异常是:java.io.lOException:使用SSL套接字工厂类的startTLS中的异常null:host,port smtp.gmail.com,587;异常:java.lang.ClassNotFoundException:javax.netssl.SSLsocketFactory

尝试了很多,但无法弄清楚如何解决它?请帮助。

3 个答案:

答案 0 :(得分:1)

尝试更改属性mail.smtp.socketFactory.class的值 到javax.net.ssl.SSLSocketFactory代替javax.net.ssl.SSLsocketFactory, 类名称区分大小写。

有关连接属性的更多信息,请查看: Where to find all available Java mail properties?

答案 1 :(得分:1)

正如其他人所指出的,您的套接字工厂设置错误。

更重要的是,you never needed to set them at all

答案 2 :(得分:0)

如果您的JavaMail库(mail.jar或javax.mail.jar)太旧,也会弹出此错误。 从此处下载最新版本:https://javaee.github.io/javamail/