相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送,在Spring Boot的Starter模块中也为此提供了自动化配置。下面通过实例来讲解如何在Spring Boot中使用JavaMailSender发送邮件。
一、引入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
二、application.properties配置
##端口号 server.port=8888 ##根据自己的情况填写 ##邮箱服务器地址 ##QQ smtp.qq.com ##sina smtp.sina.cn ##aliyun smtp.aliyun.com ##163 smtp.163.com spring.mail.host=smtp.qq.com ##邮箱用户名 spring.mail.username=949118693@qq.com ##邮箱密码(注意:QQ邮箱应该使用授权码) spring.mail.password=**************** ##编码格式 spring.mail.default-encoding=UTF-8 ##发送邮件地址 mail.fromMail.sender=949118693@qq.com ##接收邮件地址 mail.fromMail.receiver=1415954494@qq.com
三、邮件发送控制器
package com.xieke.test.demo; import java.io.File; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 邮件发送控制器 * * @author 邪客 * */ @RestController public class MailController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Value("${mail.fromMail.sender}") private String sender;// 发送者 @Value("${mail.fromMail.receiver}") private String receiver;// 接受者 @Autowired private JavaMailSender javaMailSender; /** * @Description http://localhost:8888/sendMail * @method 发送文本邮件 * @return */ @RequestMapping("/sendMail") public String sendMail() { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(sender); message.setTo(receiver); message.setSubject("邪客发送文本邮件测试");// 标题 message.setText("世界,你好!--->文本邮件");// 内容 try { javaMailSender.send(message); logger.info("文本邮件发送成功!"); return "success"; } catch (Exception e) { logger.error("文本邮件发送异常!", e); return "failure"; } } /** * @Description http://localhost:8888/sendHtmlMail * @method 发送html邮件 * @return */ @RequestMapping("/sendHtmlMail") public String testHtmlMail() { String content = "<html><body><h3>hello world ! --->Html邮件</h3></body></html>"; MimeMessage message = javaMailSender.createMimeMessage(); try { //true表示需要创建一个multipart message MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(sender); helper.setTo(receiver); helper.setSubject("邪客发送Html邮件测试"); helper.setText(content, true); javaMailSender.send(message); logger.info("Html邮件发送成功!"); return "success"; } catch (MessagingException e) { logger.error("Html邮件发送异常!", e); return "failure"; } } /** * @Description http://localhost:8888/sendFilesMail * @method 发送附件邮件 * @return */ @RequestMapping("/sendFilesMail") public String sendFilesMail() { String filePath = "F:\\select_from_user.sql"; MimeMessage message = javaMailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(sender); helper.setTo(receiver); helper.setSubject("邪客发送附件邮件测试"); helper.setText("一封带附件的邮件", true); FileSystemResource file = new FileSystemResource(new File(filePath)); String fileName = filePath.substring(filePath.lastIndexOf(File.separator)); helper.addAttachment(fileName, file); javaMailSender.send(message); logger.info("附件邮件发送成功!"); return "success"; } catch (MessagingException e) { logger.error("附件邮件发送异常!", e); return "failure"; } } /** * @Description http://localhost:8888/sendInlineResourceMail * @method 发送图片邮件 * @return */ @RequestMapping("/sendInlineResourceMail") public String sendInlineResourceMail() { String id = "xieke90"; // cid:内嵌资源 String content = "<html><body>带有图片的邮件:<img src=\'cid:" + id + "\'></body></html>"; String imgPath = "F:\\spring-cloud.png"; MimeMessage message = javaMailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(sender); helper.setTo(receiver); helper.setSubject("邪客发送图片邮件测试"); helper.setText(content, true); FileSystemResource res = new FileSystemResource(new File(imgPath)); helper.addInline(id, res); javaMailSender.send(message); logger.info("图片邮件发送成功!"); return "success"; } catch (MessagingException e) { logger.error("图片邮件发送异常!", e); return "failure"; } } }
四、分别测试文本、Html、附件、图片邮件发送
<1>、访问http://localhost:8888/sendMail,测试结果如下:
<2>、访问http://localhost:8888/sendHtmlMail,测试结果如下:
<3>、访问http://localhost:8888/sendFilesMail,测试结果如下:
<4>、访问http://localhost:8888/sendInlineResourceMail,测试结果如下:
代码已上传至码云:https://gitee.com/xieke90/spring_boot_demo (springboot-mail-demo)
转载请注明出处: http://xieke90.iteye.com/blog/2428892
相关推荐
Spring Boot和Hazelcast使用详解 Spring Boot和Hazelcast使用详解是指如何将Hazelcast集成到Spring Boot项目中,以提高应用程序的性能。Hazelcast是一个内存分布式计算平台,用于管理数据并并行执行应用程序。它...
Spring Boot 2.x基础教程:配置文件详解 Spring Boot 2.x基础教程:2.4版本前后的多环境配置变化 Spring Boot 2.x基础教程:2.4版本前后的分组配置变化 Spring Boot 2.x基础教程:配置元数据的应用 Spring Boot 2.x...
### Spring Boot 使用 MongoDB 详解 #### 一、前言 随着大数据时代的发展,NoSQL 数据库因其灵活性和高性能成为开发者的新宠。MongoDB 作为 NoSQL 数据库中的佼佼者,凭借其面向文档的存储方式、高效查询性能及...
spring boot配置文件参数详解,spring boot配置文件参数详解,spring boot配置文件参数详解,spring boot配置文件参数详解,
内容概要:本文详细介绍了Spring Boot中的一系列核心注解以及各自的作用和应用场景,其中包括@SpringBootApplication、@Configuration、@Bean、@EnableAutoConfiguration、@ComponentScan、@Controller、@Service、@...
《Spring Boot企业级开发教程》配套资源.zip是一个包含多种学习材料的压缩文件,专为学习和研究Spring Boot的企业级开发而设计。这个资源包旨在帮助用户深入理解和掌握Spring Boot框架,以及与其相关的Java和后端...
**Spring Boot核心技术详解** Spring Boot是由Pivotal团队提供的全新框架,其设计目标是为了简化Spring应用的初始搭建以及开发过程。它集成了大量的常用组件,如数据源、定时任务、缓存、邮件服务等,无需繁琐配置...
### Spring Boot开发案例详解知识点概览 #### 一、Spring Boot简介及优势 - **快速开发**:Spring Boot 自带的“约定优于配置”理念极大简化了开发过程。 - **易于部署**:支持将应用程序打包成独立的 JAR 或 WAR ...
【Spring Boot整合MyBatis详解】 在现代Java开发中,Spring Boot因其简洁的配置和强大的功能而成为首选的框架。而MyBatis作为一款优秀的持久层框架,与Spring Boot结合可以构建高效、灵活的数据库访问层。本文将...
### Spring Boot、Spring Cloud、Spring Boot Alibaba及其配套组件版本关系详解 #### 一、引言 随着微服务架构的流行,Spring Boot、Spring Cloud、Spring Boot Alibaba等技术栈成为构建现代分布式系统的基石。然而...
Spring Boot使用HikariCP连接池的详细指南 在现代Java开发中,Spring Boot框架以其简洁性和自动化配置受到广泛欢迎。Spring Boot 2.x版本默认采用HikariCP作为其数据连接池,因为HikariCP以其高效和高性能著称。...
- **自动配置**:Spring Boot 自动配置了很多常用的组件和技术栈,如数据库连接、安全框架、邮件发送等,大大降低了开发者的工作量。 - **组件支持广泛**:对于开发者希望集成到应用中的几乎所有常用框架和技术栈,...
使用application.properties 进行外部配置的 Spring Boot 知识点详解 Spring Boot 框架提供了多种方式来进行外部配置,今天我们将详细讲解使用 application.properties 文件来进行外部配置的方法。application....
《Spring Boot整合Mybatis与Druid数据库连接池的实践详解》 在当今的Java开发领域,Spring Boot以其简洁、高效的特点成为了主流的框架选择。它极大地简化了项目的配置和启动流程,使得开发者能够更加专注于业务逻辑...
### Spring Boot 邮件发送知识点详解 #### 一、环境搭建 为了使用Spring Boot进行邮件发送,首先需要搭建好相应的开发环境。 1. **开通SMTP邮件服务:** - 对于使用QQ邮箱作为SMTP服务器的情况,需要在QQ邮箱...
**Spring Boot 入门项目详解** Spring Boot 是一个由 Pivotal 团队开发的 Java 框架,旨在简化Spring应用的初始搭建以及开发过程。它预设了许多默认配置,使得开发者能够快速构建可运行的项目,而无需在配置上花费...
### Spring Boot 入门教程详解 #### Spring Boot 框架概述 Spring Boot 是由 Pivotal 团队提供的全新框架,旨在简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式(习惯优于配置)来简化整个 ...
1.37 Spring Boot的启动器Starter详解 1.38 Spring Boot集成Redis实现缓存机制 1.39 Spring Boot Cache理论篇 1.40 Spring Boot集成EHCache实现缓存机制 1.41 Spring Boot分布式Session状态保存Redis 1.42 Spring ...