Springboot项目发送邮件功能

  本帖介绍如何在Springboot项目中发送邮件

  首先,在pom中引入依赖:

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

  然后在application.properties中加上

  mail:
    host: smtp.163.com
    username: 发送者的邮箱账号
    password: 邮箱密码
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true

这里有一点要注意,host是邮箱格式,这里用的163.com,也就是网易邮箱,网易企业邮箱是: smtp.qiye.163.com

其他类型的邮箱可以自己百度一下格式.

还有就是我们需要开启POP3/SMTP服务,开启时会让我们设置客户端授权码,这个授权码替代上面代码部分的password即可成功发送邮件,

 

 代码是使用JavaMailSender类,发送邮件的方法如下:

@Autowired
    private JavaMailSender javaMailSender;

    @AutoLog(value = "发送薪资信息邮件")
    @ApiOperation(value = "发送薪资信息邮件", notes = "发送薪资信息邮件")
    @PostMapping(value = "/sendEmail")
    public Result<?> sendEmail(@RequestParam String file) {
        //获取登录人的信息
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        boolean status = false;
        try {
            // 使用SimpleMailMessage,支持简单的邮件格式和内容
            //SimpleMailMessage message = new SimpleMailMessage();
            MimeMessage msg = javaMailSender.createMimeMessage();
            MimeMessageHelper message = new MimeMessageHelper(msg, true);
            message.setFrom(from); // 邮件发送者
            message.setTo(sysUser.getEmail()); // 邮件接受者
            message.setSubject("上个月薪资信息"); // 主题
            message.setText(file,true); // 内容!
            javaMailSender.send(msg);// 消息发送
            status = true;
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println(e.getMessage());
            throw new JeecgBootException("发送失败,请联系IT运维人员");
        }

        if (status) {
            return Result.OK("发送成功");
        } else {
            return Result.error("发送失败");
        }

    }    

在这里我解释一下,要先依赖注入JavaMailSender, 有两种邮件,一种是简单的文本邮件,可以用SimpleMailMessage 

另一种是复杂格式的,例如html格式,文件附件等等都可以发送,具体可以自己研究一下,需要用MimeMessage 

这里的代码是前台传过来一个html格式的文件,我就用了MimeMessage 

对于MimeMessageHelper 实体的各个方法也有对应的注释,这里不再进行过多解释

如果只发送文本邮件,可以使用SimpleMailMessage ,新建一个SimpleMailMessage对象,直接往对象里放发送者,接收者,主题,内容等等,然后用

  javaMailSender.send(对象)     

即可,也就是上面的代码把

  MimeMessage msg = javaMailSender.createMimeMessage();

  MimeMessageHelper message = new MimeMessageHelper(msg, true);

去掉,把

  SimpleMailMessage message = new SimpleMailMessage();

取消注释.

 

posted @ 2020-10-12 17:12  孤独会说话么  阅读(515)  评论(0编辑  收藏  举报
Live2D