java发送邮件,线上发送邮件失败

java发送邮件,线上发送邮件失败

📢📢📢📣📣📣
hello 这里是北梦程序员,现阶段主要分享后端技术
一名在校大学生,共同学习,共同见证我的成长
目前掌握技术:springboot,mysql,mybatis,mybatisplus,
rabbitmq,redis,springcloudalibaba
nacos等等主流后端技术
📢📢📢📣📣📣

全天在线接单:710245264 QQ

类型:bug

语言:java

解决线上问题,在线下将问题全部解除

最近线上遇到一个bug,邮箱居然发不了,使用的是hutool工具包

在解决这个bug中踩过很多坑

  1. 修改java中jre的SSLv3协议(无效)
  2. 修改代码添加协议(无效)
  3. 最终解决办法(有效)

解决办法,话不多说上干货

在解决之前,先要配置pom

<!--添加邮件发送jar包-->
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.6.2</version>
        </dependency>
<!--        添加hutool工具类-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.19</version>
        </dependency>

添加yml中的配置属性

mail:
 # 协议
 host: smtp.qq.com
 # 端口
 port: 587
 # 是否开启安装协议
 auth: true
 # 具体发送的邮箱
 from: xxxxx@qq.com
 # 用户名 一般跟邮箱写一样的
 user: xxxxx@qq.com
 # 邮箱密码,这里的密码不是qq密码,去qq邮箱开通协议的密码
 pass: hzcaxiztsbdnbdgb

添加Mailproperties,这里直接抄就行,我是跟yml是配置好的

package com.ruoyi.framework.config.properties;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MailProperties {
    @Value("${mail.host}")
    private String host;

    @Value("${mail.port}")
    private Integer port;

    @Value("${mail.auth}")
    private boolean auth;

    @Value("${mail.from}")
    private String from;

    @Value("${mail.user}")
    private String user;

    @Value("${mail.pass}")
    private String pass;

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public Integer getPort() {
        return port;
    }

    public void setPort(Integer port) {
        this.port = port;
    }

    public boolean isAuth() {
        return auth;
    }

    public void setAuth(boolean auth) {
        this.auth = auth;
    }

    public String getFrom() {
        return from;
    }

    public void setFrom(String from) {
        this.from = from;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }
}

编写MailConfig,直接复制即可

package com.ruoyi.framework.config;

import cn.hutool.extra.mail.MailAccount;
import com.ruoyi.framework.config.properties.MailProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MailConfig {
    @Autowired
    private MailProperties mailProperties;


    @Bean
    public MailAccount mailAccount(){
        MailAccount mailAccount = new MailAccount();

        mailAccount.setHost(mailProperties.getHost());
        mailAccount.setPort(mailProperties.getPort());
        mailAccount.setAuth(mailProperties.isAuth());
        mailAccount.setFrom(mailProperties.getFrom());
        mailAccount.setUser(mailProperties.getUser());
        mailAccount.setPass(mailProperties.getPass());

        return  mailAccount;
    }

}

最后编写发送邮箱的具体方法

//1.注入MailAccount
@Autowired
private MailAccount mailAccount;
//2.使用MailUtil发送邮件
//            注入的account                                
MailUtil.send(mailAccount,
              //用户邮箱,发送给谁这里填谁
              CollUtil.newArrayList("xxxx@qq.com"),
              //标题  
              "验证码",
             //具体内容    
              "您的验证码是:<h3>"+c+"</h3>",
             //是否是html
              true);

到这里咱们的邮箱发送就完成了

结尾

到这里我们的项目就部署完成了,如果有学到请给点个赞
有问题请加QQ:710245264
备注来源:CSDN bilibili 华为云

以上是北梦所分享的线上邮箱发送解决

感谢各位阅读本品文章,关注博主后续继续分享Demo,制作不易,点个赞吧👍

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值