我已经使用portecle软件添加了证书 .

org.springframework.mail.MailSendException:邮件服务器连接失败;嵌套异常是javax.mail.MessagingException:异常读取响应;嵌套异常是:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径 . 失败的消息:javax.mail.MessagingException:异常读取响应;嵌套异常是:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径;消息异常详细信息(1)是:失败消息1:javax.mail.MessagingException:异常读取响应;嵌套异常是:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法在com.sun.mail找到请求目标的有效证书路径.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1462)位于com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1260)的com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370) )在org.springframework.mail.javamail.JavaMailSenderImpl.javamail(JavaMailSenderImpl.java:501)的javax.mail.Service.connect(Service.java:275)org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl . java:421)atg.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:345)atg.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:340)at com.propertiestree.admin.service com.proper上的.impl.UserServiceImpl.sendMail(UserServiceImpl.java:376)位于org.springframework.cglib.proxy.MethodProxy的com.propertiestree.admin.service.impl.UserServiceImpl $$ FastClassBySpringCGLIB $$ 9317b224.invoke()中的tiestree.admin.service.impl.UserServiceImpl.sendForgotPasswordMail(UserServiceImpl.java:299) .invoke(MethodProxy.java:204)在org.springframework.aop.framework.CglibAopProxy $ DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669)在com.propertiestree.admin.service.impl.UserServiceImpl $$ EnhancerBySpringCGLIB $$ c794cf86.sendForgotPasswordMail ()在com.propertiestree.admin.rest.controller.UserRestController.sendForgetPasswordMail(UserRestController.java:99)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke(Method.java:498)在org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java :205)在Org.springframework的org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) org.springframework上的org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)中的.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) .web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)在org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)在org.springframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:901)org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)org.springframework.web.servlet.FrameworkServlet.doGet(Fr) ameworkServlet.java:861)位于javax.servlet.http.HttpServlet的org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)的javax.servlet.http.HttpServlet.service(HttpServlet.java:635) .service(HttpServlet.java:742)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org . apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)在org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:166)在org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter在org.springframework.boot.actuate.trace.WebRequestTraceFilter(ApplicationFilterChain.java:193)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) . doFilterInternal(WebRequestTraceFilter.java:110)org.apache上的org.apring.Teache.atup.doFilter.OternalPerRequestFilter.doFilter(OncePerRequestFilter.java:107)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) .catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:317)在org.springframework.security.web.access.intercept.FilterSecurityInterceptor .invoke(FilterSecurityInterceptor.java:127)位于org.springframework.security.web.FilterChainProxy $ V的org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)位于org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java)的org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)中的irtualFilterChain.doFilter(FilterChainProxy.java:331): 331)在org.springframework.security的org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331) org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter上的org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)中的.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) (RequestCacheAwareFilter.java:63)org.springframework.sec上的org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331) urg.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)位于org.springframework.security.web.header的org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331) . 位于org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)的org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)中的HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)在org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)在org.springframework.security.web org.springframework上的org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)中的.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) . security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy . Java的:177)在org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)在org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)在org.apache.catalina.core .applicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)在org.apache.catalina.core.Applicati onFilterChain.doFilter(ApplicationFilterChain.java:166)org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105)atg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter)的.java:81)在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)在org.apache.catalina . core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)atorg.apringframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:166)在org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106)在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)在org.apache .catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)在org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java :96)在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)在org.apache.catalina.core . ApplicationFil terChain.doFilter(ApplicationFilterChain.java:166)在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)在组织.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve .java:80)org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)org.apache.coyote上的org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) . 位于org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:861)org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)的http11.Http11Processor.service(Http11Processor.java:799) org.apache.tomcat.u上的.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1455) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)中的til.net.SocketProcessorBase.run(SocketProcessorBase.java:49)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:748)引起:javax.net.ssl.SSLHandshakeException:sun .security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法在sun的sun.security.ssl.Alerts.getSSLException(Alerts.java:192)找到所请求目标的有效证书路径.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1964)at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:328)at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:322)at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1614)at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)a t sun.security.ssl.Handshaker.processLoop(Handshaker.java:1052)at sun.security.ssl.Handshaker.process_record(Handshaker.java:987)at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1072) )sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:938)at sun.security.ssl.AppInputStream.read(AppInputStream.java: 105)位于java.io.BufferedInputStream.read(BufferedInputStream.java:246)的com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:97)中的java.io.BufferedInputStream.read(BufferedInputStream.java:265) )com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:75)at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1440)... 112更多引起:sun.security .validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法在sun.securi找到所请求目标的有效证书路径ty.validator.PKIXValidator.doBuild(PKIXValidator.java:397)at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302)at sun.security.validator.Validator.validate(Validator.java:260)at sun .security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)在sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)在sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)在sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1596) ... 124更多引起:sun.security.provider.certpath.SunCertPathBuilderException:无法在sun.security.provider上找到所请求目标的有效证书路径 . certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)位于java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)的sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:392)... 130更多

#########################################
    spring.mail.host= smtp.zoho.com
    spring.mail.port=465
    spring.mail.username=
    spring.mail.password= 
    spring.mail.properties.transport.protocol = smtp
    #spring.mail.properties.mail.smtp.starttls.enable=true
    spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory
    spring.mail.properties.mail.smtp.socketFactory.fallback = true
    spring.mail.properties.smtp.starttls.enable = true
    spring.mail.properties.mail.smtp.auth=true
    spring.session.store-type=none