行业知识
在 Spring Boot 中配置和使用 JavaMailSender 发送邮件
2026-10-25 15:27:43
来源:互联网转载
@ 作者: 一恍过去 @ 主页: https://blog.csdn.net/zhuocailing3390 @ 社区: Java技术栈交流 @ 主题: 在 Spring Boot 中配置和使用 JavaMailSender 发送邮件 ⏱️ @ 创作时间: 2023年09月11日
目录
- 1、pom配置
- 2、yaml配置
- 3、发送普通文本
- 4、发送html模板邮箱
- 5、发送附件
- 6、发送图片
- 7、结合模板引擎发送html邮箱
- 7.1添加依赖
- 7.2 配置html页面
- 7.3 Java代码
1、pom配置
org.springframework.boot spring-boot-starter-mail
2、yaml配置
spring: mail: # 比如:使用qq邮箱服务(也可以其他服务) host: smtp.qq.com #发送方的邮箱 username: xxx@qq.com # 设置密码,该处的密码是发送方QQ邮箱开启SMTP的授权码而非QQ密码 password: xxxx default-encoding: UTF-8 properties: mail: smtp: ssl: enable: true
其他邮箱服务:
- smtp.163.com:163邮箱
- smtp.126.com:126邮箱
- smtp.qq.com:qq邮箱
3、发送普通文本
代码:
Cntroller:
@RestController@RequestMapping("/mail")public class Controller { @Resource private MailService mailService; /** * 发送方邮件 * * @return */ @Value("${spring.mail.username}") private String sender; /** * 发送文本邮件 * * @return */ @GetMapping("/sendText") public String sendText() { //这个是接受人的邮箱 String receiver = "xxx@qq.com"; //标题 String subject = "邮箱标题(主题)"; //内容 String text = "这个是邮箱内容"; //文本邮箱 return mailService.sendTestMail(sender, receiver, subject, text); }}Service:
@Servicepublic class MailService { @Resource private JavaMailSender jms; public String sendTestMail(String sender, String receiver, String subject, String text) { //建立邮件消息 SimpleMailMessage mainMessage = new SimpleMailMessage(); //发送方 mainMessage.setFrom(sender); //接收方 mainMessage.setTo(receiver); //发送的标题 mainMessage.setSubject(subject); //发送的内容 mainMessage.setText(text); //发送邮件 jms.send(mainMessage); return "success"; }}浏览器访问:http://localhost:8080/mail/sendText
查看邮件,内容如下:
4、发送html模板邮箱
代码:
Cntroller:
@RestController@RequestMapping("/mail")public class Controller { @Resource private MailService mailService; /** * 发送方邮件 * * @return */ @Value("${spring.mail.username}") private String sender; /** * html模板邮箱 * * @return */ @GetMapping("/sendHtml") public String sendHtml() { //这个是接受人的邮箱 String receiver = "xxx@qq.com"; //标题 String subject = "邮箱标题(主题)"; //内容 String content = "\n"+ "\n"+ "这是一封有历史意义的HTML邮件,请注意查收!!!
\n"+ "\n"+ ""; //模板邮箱 return mailService.sendHtml(sender, receiver, subject, content); }}Service:
@Servicepublic class MailService { @Resource private JavaMailSender jms; public String sendHtml(String sender, String receiver, String subject, String content) { MimeMessage message = jms.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(message, true); //发送方 helper.setFrom(sender); //接收方 helper.setTo(receiver); //邮件主题 helper.setSubject(subject); //邮件内容 helper.setText(content, true); jms.send(message); } catch (MessagingException e) { e.printStackTrace(); } return "sendHtml success"; }}浏览器访问: http://localhost:8080/mail/sendHtml
查看邮件,内容如下:
5、发送附件
代码:
Cntroller:
@RestController@RequestMapping("/mail")public class Controller { @Resource private MailService mailService; /** * 发送方邮件 * * @return */ @Value("${spring.mail.username}") private String sender; /** * 附件邮箱 * * @return */ @GetMapping("/sendAttachment") public String sendAttachment() { //这个是接受人的邮箱 String receiver = "xxx@qq.com"; //标题 String subject = "邮箱标题(主题)"; // 附件位置 String filePath = "C:\Users\Desktop\Java整合Mail.txt"; String content = "我的这封邮件可以带附件!!!"; //附件邮箱 return mailService.sendAttachment(sender, receiver, subject, content, filePath); }}Service:
@Servicepublic class MailService { @Resource private JavaMailSender jms; public String sendAttachment(String sender, String receiver, String subject, String content, String filePath) { MimeMessage message = jms.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(message, true); //发送方 helper.setFrom(sender); //接收方 helper.setTo(receiver); //邮件主题 helper.setSubject(subject); //邮件内容 helper.setText(content, true); //邮件的附件 FileSystemResource file = new FileSystemResource(new File(filePath)); //获取附件的文件名 String fileName = file.getFilename(); helper.addAttachment(fileName, file); jms.send(message); } catch (MessagingException e) { e.printStackTrace(); } return "sendAttachment success"; }}浏览器访问: http://localhost:8080/mail/sendAttachment
查看邮件,内容如下:
6、发送图片
代码:
Cntroller:
@RestController@RequestMapping("/mail")public class Controller { @Resource private MailService mailService; /** * 发送方邮件 * * @return */ @Value("${spring.mail.username}") private String sender; /** * 图片邮箱 * * @return */ @GetMapping("/sendPicture") public String sendPicture() { //这个是接受人的邮箱 String receiver = "xxx@qq.com"; //标题 String subject = "邮箱标题(主题)"; String picPath = "C:\Users\LiGezZ\Desktop\test.jpeg"; String picId = "PIC001"; String content = "图片邮件\n" + ""; //图片邮箱 return mailService.sendPicture(sender, receiver, subject, content, picPath, picId); }}Service:
@Servicepublic class MailService { @Resource private JavaMailSender jms; public String sendPicture(String sender, String receiver, String subject, String content, String picPath, String picId) { MimeMessage message = jms.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(message, true); //发送方 helper.setFrom(sender); //接收方 helper.setTo(receiver); //邮件主题 helper.setSubject(subject); //邮件内容 helper.setText(content, true); //邮件的图片 FileSystemResource file = new FileSystemResource(new File(picPath)); helper.addInline(picId, file); jms.send(message); } catch (MessagingException e) { e.printStackTrace(); } return "sendPicture success"; }}浏览器访问: http://localhost:8080/mail/sendPicture
查看邮件,内容如下:
7、结合模板引擎发送html邮箱
该方式时,引入thymeleaf依赖,事先定义好html样式,html里面的参数是动态加载的,由后端进行控制。与传统的html邮箱相比:可以定义更加复杂的样式、更加灵活的参数显示。
7.1添加依赖
org.springframework.boot spring-boot-starter-thymeleaf
7.2 配置html页面
在resource/templates下创建mail.html,代码如下:
用户列表
用户名 昵称 年龄 7.3 Java代码
代码:
User实体:
public class User { private String username; private String nickname; private Integer age; private boolean odd; // 省略get、set}Cntroller:
@RestController@RequestMapping("/mail")public class Controller { @Resource private MailService mailService; /** * 发送方邮件 * * @return */ @Value("${spring.mail.username}") private String sender; /** * Thymeleaf+html模板邮箱 * * @return */ @GetMapping("/sendThymeleaf") public String sendThymeleaf() { //这个是接受人的邮箱 String receiver = "xxx@qq.com"; //标题 String subject = "邮箱标题(主题)"; // Thymeleaf+html模板邮箱 return mailService.sendThymeleaf(sender, receiver, subject); }}Service:
@Servicepublic class MailService { @Resource private JavaMailSender jms; @Resource private TemplateEngine templateEngine; public String sendThymeleaf(String sender, String receiver, String subject) { try { //操作获取html模板 Context context = new Context(); // 设置html中的变量 List userList = new ArrayList(); for (int i = 1; i User user = new User(); user.setUsername("admin-" + i); user.setNickname("用户-" + i); user.setAge(20 + i); user.setOdd(i % 2 == 0); userList.add(user); } // 设置html参数 context.setVariable("userList", userList); //获取指定的html模板 String result = templateEngine.process("mail", context); //创建一个发送复杂消息对象 MimeMessage mimeMessage = jms.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage); helper.setSubject(subject); //邮件内容,setText()第二个参数表示是否开启解析html helper.setText(result, true); helper.setFrom(sender); helper.setTo(receiver); jms.send(mimeMessage); } catch (MessagingException e) { e.printStackTrace(); } return "sendThymeleaf success"; }}
上一篇:rust服务器怎么设置资源?