<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.itheima</groupId> <artifactId>chapter091</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> </parent> <dependencies> <!-- Spring Boot整合支持的Thymeleaf模板引擎依赖启动器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- 邮件服务依赖启动器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> </plugins> </build> </project>
server:
port: 8088
spring:
mail:
host: smtp.qq.com
port: 587
username: 1178XXXXX@qq.com
password: XXXXXXXXX
default-encoding: UTF-8
properties:
mail:
smtp:
connectiontimeout: 5000
timeout: 3000
writetimeout: 5000
package com.itheima.service; import java.io.File; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.MailException; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Service; @Service public class SendEmailService { @Autowired private JavaMailSenderImpl mailSender; @Value("${spring.mail.username}") private String from; /** * 发送纯文本邮件 * * @param to 收件人地址 * @param subject 邮件标题 * @param text 邮件内容 */ public void sendSimpleEmail(String to, String subject, String text) { // 定制纯文本邮件信息SimpleMailMessage SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to); message.setSubject(subject); message.setText(text); try { // 发送邮件 mailSender.send(message); System.out.println("纯文本邮件发送成功"); } catch (MailException e) { System.out.println("纯文本邮件发送失败 " + e.getMessage()); e.printStackTrace(); } } /** * 发送复杂邮件(包括静态资源和附件) * * @param to 收件人地址 * @param subject 邮件标题 * @param text 邮件内容 * @param filePath 附件地址 * @param rscId 静态资源唯一标识 * @param rscPath 静态资源地址 */ public void sendComplexEmail(String to, String subject, String text, String filePath, String rscId, String rscPath) { // 定制复杂邮件信息MimeMessage MimeMessage message = mailSender.createMimeMessage(); try { // 使用MimeMessageHelper帮助类,并设置multipart多部件使用为true MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); helper.setText(text, true); // 设置邮件静态资源 FileSystemResource res = new FileSystemResource(new File(rscPath)); helper.addInline(rscId, res); // 设置邮件附件 FileSystemResource file = new FileSystemResource(new File(filePath)); String fileName = filePath.substring(filePath.lastIndexOf(File.separator)); helper.addAttachment(fileName, file); // 发送邮件 mailSender.send(message); System.out.println("复杂邮件发送成功"); } catch (MessagingException e) { System.out.println("复杂邮件发送失败 " + e.getMessage()); e.printStackTrace(); } } /** * 发送模板邮件 * * @param to 收件人地址 * @param subject 邮件标题 * @param content 邮件内容 */ public void sendTemplateEmail(String to, String subject, String content) { MimeMessage message = mailSender.createMimeMessage(); try { // 使用MimeMessageHelper帮助类,并设置multipart多部件使用为true MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); helper.setText(content, true); // 发送邮件 mailSender.send(message); System.out.println("模板邮件发送成功"); } catch (MessagingException e) { System.out.println("模板邮件发送失败 " + e.getMessage()); e.printStackTrace(); } } }
package com.itheima; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.thymeleaf.TemplateEngine; import org.thymeleaf.context.Context; import com.itheima.service.SendEmailService; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class ApplicationTest { @Autowired private SendEmailService sendEmailService; @Autowired private TemplateEngine templateEngine; @Test public void sendSimpleMailTest() { String to = "XXXXXXXXX@qq.com"; String subject = "【纯文本邮件】标题"; String text = "Spring Boot纯文本邮件发送内容测试....."; // 发送简单邮件 sendEmailService.sendSimpleEmail(to, subject, text); } @Test public void sendComplexEmailTest() { String to = "XXXXXXX1@qq.com"; String subject = "【复杂邮件】标题"; // 定义邮件内容 StringBuilder text = new StringBuilder(); text.append("<html><head></head>"); text.append("<body><h1>祝大家元旦快乐!</h1>"); // cid为固定写法,rscId指定一个唯一标识 String rscId = "img001"; text.append("<img src='cid:" + rscId + "'/></body>"); text.append("</html>"); // 指定静态资源文件和附件路径 String rscPath = "F:\\email\\newyear.jpg"; String filePath = "F:\\email\\元旦放假注意事项.docx"; // 发送复杂邮件 sendEmailService.sendComplexEmail(to, subject, text.toString(), filePath, rscId, rscPath); } @Test public void sendTemplateEmailTest() { String to = "XXXXXXXXXX@qq.com"; String subject = "【模板邮件】标题"; // 使用模板邮件定制邮件正文内容 Context context = new Context(); context.setVariable("username", "石头"); context.setVariable("code", "456123"); // 使用TemplateEngine设置要处理的模板页面 String emailContent = templateEngine.process("emailTemplate_vercode", context); // 发送模板邮件 sendEmailService.sendTemplateEmail(to, subject, emailContent); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)