首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我通过使用Spring发件人获得了SSLHandshakeException

我通过使用Spring发件人获得了SSLHandshakeException
EN

Stack Overflow用户
提问于 2020-10-29 09:03:21
回答 2查看 916关注 0票数 0

我通过使用Sender获得了SSLHandshakeException。我已经指定了我在下面编写的所有代码段和属性文件。我应该做些什么来修复这个错误?

日志错误

代码语言:javascript
运行
复制
Mail sending is started
Error occured: Mail server connection failed; nested exception is javax.mail.MessagingException: Could not convert socket to TLS;
  nested exception is:
    javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. Failed messages: javax.mail.MessagingException: Could not convert socket to TLS;
  nested exception is:
    javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Process finished with exit code 0

应用程序属性

代码语言:javascript
运行
复制
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username= myemail
spring.mail.password= mypass
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

服务层

代码语言:javascript
运行
复制
@Service
public class SendEmailService {

    @Autowired
    private JavaMailSender javaMailSender;

    public void sendEmail(String to, String body, String topic){
        try {
            System.out.println("Mail sending is started");
            SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
            simpleMailMessage.setFrom("mail@mail.com");
            simpleMailMessage.setTo(to);
            simpleMailMessage.setSubject(topic);
            simpleMailMessage.setText(body);
            javaMailSender.send(simpleMailMessage);
            System.out.println("Mail sending is completed");
        }catch (Exception e){
            System.out.println("Error occured: "+e.getMessage());
        }
    }
}

SpringBootApplication类

代码语言:javascript
运行
复制
@SpringBootApplication
public class MailSenderApplication {

    @Autowired
    SendEmailService sendEmailService;

    public static void main(String[] args) {
        SpringApplication.run(MailSenderApplication.class, args);
    }

    @EventListener(ApplicationReadyEvent.class)
    public void triggerWhenStarts(){
        sendEmailService.sendEmail("mutlueren01@gmail.com","This e-mail has sending by Spring Boot","Spring Boot Mail Sender TEST");
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-29 09:43:11

您需要将SMTP证书添加到java密钥存储区:How to import a .cer certificate into a java keystore?

或禁用证书检查(不推荐):How to bypass ssl certificate checking in java

票数 0
EN

Stack Overflow用户

发布于 2021-12-27 20:58:06

您可以将邮件服务提供商添加为受信任的:

spring.mail.properties.mail.smtp.ssl.trust=smtp.gmail.com

这一行应该添加到application.properties文件中。解决方案适用于Java 11。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64587893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档