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

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 @   Shineloner  阅读(100)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示