项目开发日志——发送邮件

JavaMailSender

1. 开启邮箱的SMTP服务

2. 配置properties文件

spring.mail.host=smtp.163.com
spring.mail.username=shineloner@163.com
spring.mail.password=授权码
spring.mail.protocol=smtps
spring.mail.properties.mail.smtl.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

3. 编写工具类

因为发邮件经常用到,所以将发送邮件的操作封装为一个工具类利于代码复用。

@Component  //用Component注解将其标识为一个组件,便于Spring扫描
public class MailUtil {

    @Autowired
    private JavaMailSender javaMailSender;  
    //JavaMailSender是一个接口,里面有两类方法,分别是createMimeMessage和send

    //从配置文件中获取值,from是发送方
    @Value("${spring.mail.username}")
    private String from;

    public void sendMail(String to, String subject, String content) {
        try{
            MimeMessage message = javaMailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message);
            helper.setFrom(from);  //设置发件人
            helper.setTo(to);   //设置收件人
            helper.setSubject(subject);   //设置主题
            helper.setText(content,true);   //设置内容,不加true,会认为是普通文本
            javaMailSender.send(helper.getMimeMessage());
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}

4. 测试

public class MailTest {

    @Autowired
    private MailUtil mailUtil;  //自动装配MailUtil
    @Autowired
    private TemplateEngine templateEngine;  //自动装配thymeleaf默认的模板引擎

    @Test
    public void testMailSend() {
        //发送普通文本邮件
        mailClient.sendMail("128****842@qq.com","测试邮箱","嘿嘿");
    }
    @Test
    public void testHtmlMail() {
        //发送HTML模板邮件
        Context context = new Context();
        //context用来设置HTML文件中的替代元素如${username},会替换为Shineloner
        context.setVariable("username", "Shineloner");
        //"/mail/demo"是在templates文件夹下的文件,HTML模板
        String content = templateEngine.process("/mail/demo",context);
        mailClient.sendMail("1285419842@qq.com", "Html格式测试",content);
    }
}

HTML模板文件如下

<!DOCTYPE html>
<!-- 一定要加thymeleaf约束 -->
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>HTML</title>
</head>
<body>
<p>欢迎注册MooClub,<span th:text="${username}"></span></p>
</body>
</html>

普通文本发送成功!

HTML模板发送成功!

posted @ 2022-10-11 22:21  Shineloner  阅读(107)  评论(0)    收藏  举报