• 使用Spring Boot Mail 发送邮件


    Spring boot mail是spring-boot框架专门发送邮件的一个模块,它对java的原生邮件API进行了封装,使操作更加简单,配置更加容易。只需要三步,即可解决邮件发送。

    1)老样子,先加依赖。去maven中心仓库,搜索 spring-boot-starter-mail, 找到你想用的版本,复制dependency代码,大概这个样子: (当然别忘了要有版本号的哈 <version>x.xx</version>)

    <dependency>  
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>  

    2) 在application.yml 或者application.properties加入邮件服务器的配置,这里我用yml文件做示例:

    spring:
      mail:
        host: smtp.qq.com
        username: test@qq.com
        password: XXXXXXXX
        properties:
          mail:
            smtp:
              auth: true
              starttls:
                enable: true
                required: true

    NOTE: 要先配置一下邮箱哈,确保邮箱账号启用了POP3协议,如果没有启用,先去邮箱把它启用。这里的密码是授权码,启用成功页面会显示的。下图是QQ邮箱的,其他邮箱操作大致也差不多。

    3) 需要写一点简单的测试代码,比如我们要发送一个简单的邮件(没有附件,没有富文本):

    @Autowired
    private JavaMailSender javaMailSender;
    public void sendSimpleMail() {
        SimpleMailMessage mail = new SimpleMailMessage();
        mail.setFrom("shachuweilai@qq.com");
        mail.setTo("894242586@qq.com");
        mail.setSubject("这是邮件主题");
        mail.setText("这是邮件内容");
        javaMailSender.send(mail);
    }

    现在我们发送一个复杂一点的邮件,包括附件和HTML内容(注意附件的路径替换成一个真实路径):

    public void sendMimeMail() {
        MimeMessage message = javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom("shachuweilai@qq.com");
            helper.setTo("894242586@qq.com");
            helper.setSubject("这是邮件主题");
            helper.setText("<h1> HTML富文本内容 </h1>", true);//第二个参数true,表示发送HTML文本
            helper.addAttachment("测试附件.xlsx", new File("F:\test.xlsx"));
            javaMailSender.send(helper.getMimeMessage());
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

    OK了,简单三步,搞定!

    另外,如果碰到连接超时或者读取服务器信息超时的情况可以加入下面的配置:

    spring:

      mail:

      host: XXX
      port: 25
      username: XXX
      password: XXX
      properties:
        mail:
          smtp:
            auth: true
            starttls:
              enable: true
              required: true
            timeout: 300000
            connectiontimeout: 300000

    peroperties格式版本:

    spring.mail.properties.mail.smtp.timeout=300000

    spring.mail.properties.mail.smtp.connectiontimeout=300000

  • 相关阅读:
    使用Stream流递归 组合树形结构
    MySQL 8 通用表表达式
    sa-token 权限认证
    先更新缓存还是先更新数据库?
    钉钉 回调事件 消息加解密
    commons-io
    stream和parallelstream的区别
    消除if...else
    springboot 扩展xml请求和响应
    springboot admin 邮箱
  • 原文地址:https://www.cnblogs.com/cnsec/p/13407182.html
Copyright © 2020-2023  润新知