spring boot 发邮件 填坑指南

在使用Spring Boot发送邮件时遇到javamail无法连接SMTP主机的问题,该问题由JDK8默认使用IPv6引起。解决方法是在VM arguments中设置-Djava.net.preferIPv4Stack=true。另外,若出现PKIX错误,需要生成并安装证书,具体步骤包括编译InstallCert.java,生成证书,并将其添加到信任库或指定路径。确保SMTP配置正确以避免此类错误。
摘要由CSDN通过智能技术生成

发送报错javamail could not connect to smtp host

解决:

在VM arguments中输入 -Djava.net.preferIPv4Stack=true   【因为:用的jdk8默认使用IPV6,只要改为IPV4就能解决。】

备注SMTP的配置也要正确:

spring:
  mail:
    host: aa.bb.com.cn #发送邮件服务器  smtp.qq.com
    username: ehr@aa.bb.cn #发送邮件的邮箱地址
    password:  ###### #客户端授权码,不是邮箱密码,这个在qq邮箱设置里面自动生成的
    properties.mail.smtp.port: 465 #端口号465或587
    properties.mail.smtp.auth: true
    from: aa@bb.com.cn # 发送邮件的地址,和上面username一致
    protocol: smtp
    properties.mail.smtp.starttls.enable: true
    properties.mail.smtp.starttls.required: true
    properties.mail.smtp.ssl.enable: true
    properties.mail.smtp.auth.enable: true
    default-encoding: utf-8
    测试代码: mailService.sendSimpleMail("xxx@163.com","主题:你好邮件","内容:第一封邮");



    /**
     * Spring Boot 提供了一个发送邮件的简单抽象,使用的是下面这个接口,这里直接注入即可使用
     */
    @Autowired
    private JavaMailSender mailSender;

    /**
     * 配置文件中我的qq邮箱
     */
    @Value("${spring.mail.from}")
    private String from;

    /**
     * 简单文本邮件
     * @param to 收件人
     * @param subject 主题
     * @param content 内容
     */
    @Override
    public void sendSimpleMail(String to, String subject, String content) {
        //创建SimpleMailMessage对象
        SimpleMailMessage message = new SimpleMailMessage();
        //邮件发送人
        message.setFrom(from);
        //邮件接收人
        message.setTo(to);
        //邮件主题
        message.setSubject(subject);
        //邮件内容
        message.setText(content);
        //发送邮件
        mailSender.send(message);
    }

备注,如果有:PKIX:unable to find valid certification path to requested target 的问题

还需要生成证书:

/*
 * Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
 *
 *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

紫气东来_999

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值