本帖介绍如何在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();
取消注释.