项目开发日志——发送邮件
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模板发送成功!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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)