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(); } } }
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 com.itheima.service.SendEmailService; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class ApplicationTest { @Autowired private SendEmailService sendEmailService; @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); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!