使用 SpringBoot 进行邮件的发送是一个很实用同时挺常见的功能,比如:验证码的发送、登陆的激活邮件等
这里对使用进行一个简单的记录,具体教程可以查看 官网的 Integration
首先不是对代码进行修改而是先开启想要进行邮箱发送的地址进行配置,在邮箱设置上打开 SMTP 服务,保留生成的授权码后续作为密码进行程序的登录
然后就可以开始写程序了,首先导入依赖:
1 2 3 4 5
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> <version>2.5.6</version> </dependency>
|
然后配置邮箱的参数,
1 2 3 4 5 6 7 8 9 10 11 12
| spring: mail: host: smtp.163.com port: 465 username: XXXXXXXXX password: XXXXXXXXX protocol: smtps
|
编写 MailUtil 类对发送操作进行封装
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
|
@Component public class MailClient { private static final Logger logger = LoggerFactory.getLogger(MailClient.class);
private final JavaMailSender mailSender;
public MailClient(JavaMailSender mailSender) { this.mailSender = mailSender; }
@Value("${spring.mail.username}") private String from;
public void sendMail(String to, String subject, String content) { MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message); try { helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); helper.setText(content, true); mailSender.send(helper.getMimeMessage()); } catch (MessagingException e) { logger.error(" 发送邮件失败:" + e.getMessage()); } } }
|
使用模板定义 HTML 页面,发送邮件其实是一个重复性很强的操作,可以提前定义模板然后使用 org.thymeleaf.context.Context
进行具体值的修改
1 2 3 4 5 6 7 8 9 10 11 12
| @Test public void testHtmlMail() { Context context = new Context(); context.setVariable("username", "Aidan");
String content = templateEngine.process("/mail/demo", context);
mailClient.sendMail("XXXXXXXXX", "HTMLTest", content); }
|