本文最后更新于:2023年8月24日 晚上
准备工作
- 导入依赖
- 配置邮箱服务器
导入依赖
1 2 3 4 5
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> <version>2.6.7</version> </dependency>
|
配置邮箱服务器
1 2 3 4 5 6 7 8 9
| spring: mail: host: smtp.qq.com username: XXXXXX@qq.com password: XXXXXXX
mail: mailTo: XXXXXXX@qq.com mailFrom: XXXXXXX@qq.com
|
mailTo(发送给谁) 和 mailFrom(是谁发送) 是自定的,给后续发送邮箱时使用
host:表示使用邮箱服务器的地址,其他服务器请往下看
username:邮箱名
password:邮箱密码,如是qq邮箱,必须要在qq邮箱中设置开启SMTP(电子邮件传输协议),并使用提供的唯一密码
发送简易邮箱
使用SimpleMailMessage对象即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| @Value("${mail.mailTo}") private String mailTo;
@Value("${mail.mailFrom}") private String mailFrom;
@Value("${mail.codeLength}") private Integer codeLength;
@Value("${mail.codeSubject}") private String codeSubject;
@Autowired private JavaMailSender javaMailSender;
private String createCode() { String time = Long.toString(System.currentTimeMillis()); return UUID.randomUUID().toString().replaceAll("[a-zA-Z-]", "").substring(0, codeLength - 2) + time.substring(time.length() - 2); }
@Test void easySend() { SimpleMailMessage simpleMailMessage = new SimpleMailMessage(); simpleMailMessage.setTo(mailTo); simpleMailMessage.setFrom(mailFrom); simpleMailMessage.setSubject(codeSubject); simpleMailMessage.setText("验证码为:" + createCode()); try { javaMailSender.send(simpleMailMessage); log.info("邮件已发送!"); } catch (MailException e) { e.printStackTrace(); log.error("发送邮件时发生异常!"); } }
|
发送HTML邮箱
- 获取message
- 添加发送内容
- 发送
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| @Value("${mail.mailTo}") private String mailTo;
@Value("${mail.mailFrom}") private String mailFrom;
@Value("${mail.codeLength}") private Integer codeLength;
@Value("${mail.codeSubject}") private String codeSubject;
@Autowired private JavaMailSender javaMailSender;
@Test void htmlSend() { String content = "<html>\n" + "<body>\n" + " <h3>验证码为:" + createCode() + "</h3>\n" + "</body>\n" + "</html>"; MimeMessage message = javaMailSender.createMimeMessage(); try { MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(message, true); mimeMessageHelper.setTo(mailTo); mimeMessageHelper.setFrom(mailFrom); mimeMessageHelper.setText(content, true); mimeMessageHelper.setSubject(codeSubject); javaMailSender.send(message); log.info("发送HTML邮箱成功!"); } catch (MessagingException e) { e.printStackTrace(); log.error("发送HTML邮件时发生异常!"); } }
|
发送图片邮箱
- 建立message
- 添加发送对象
- 获取发送file对象
- 添加发送
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| @Test void sendImg() { String pid = UUID.randomUUID().toString().replace("-", "").substring(0, 3); String imgUrl = "src/main/resources/img/img1.png"; String content = "<html><body>这是有图片的邮件:<img src='cid:"+pid+"' ></body></html>"; MimeMessage message = javaMailSender.createMimeMessage();
try { MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(message, true); mimeMessageHelper.setFrom(mailFrom); mimeMessageHelper.setTo(mailTo); mimeMessageHelper.setSubject(codeSubject); mimeMessageHelper.setText(content, true); FileSystemResource res = new FileSystemResource(new File(imgUrl)); mimeMessageHelper.addInline(pid, res); javaMailSender.send(message); log.info("邮箱已发送!"); } catch (MessagingException e) { e.printStackTrace(); log.error("邮箱发送失败!"); } }
|