Spring Boot 揭秘与实战(七) 实用技术篇 - Java Mail 发送邮件
Spring 对 Java Mail 有很好的支持。因此,Spring Boot 也提供了自动配置的支持。
Spring Boot 集成 Java Mail
Spring Boot 中使用 Java Mail 非常简单方便。修改 pom 文件,添加依赖。
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-mail</artifactId>
- </dependency>
在 src/main/resources/application.properties 中配置邮件信息
- spring.mail.host=smtp.163.com
- spring.mail.username=请输入用户名
- spring.mail.password=请输入密码
- spring.mail.port=25
- spring.mail.protocol=smtp
- spring.mail.default-encoding=UTF-8
单元测试
我们通过编写单元测试用例,测试 Java Mail 是否正常工作。值得注意的是,邮件包括几种类型:简单文本的邮件、 HTML 文本的邮件、 内嵌图片的邮件、 包含附件的邮件。
- @RunWith(SpringJUnit4ClassRunner.class)
- @SpringApplicationConfiguration(WebMain.class)
- public class SpringMailTest {
- @Autowired
- private JavaMailSenderImpl mailSender;
- /**
- * 发送包含简单文本的邮件
- */
- @Test
- public void sendTxtMail() {
- SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
- // 设置收件人,寄件人
- simpleMailMessage.setTo(new String[] {"lianggzone@163.com"});
- simpleMailMessage.setFrom("lianglevel@163.com");
- simpleMailMessage.setSubject("Spring Boot Mail 邮件测试【文本】");
- simpleMailMessage.setText("这里是一段简单文本。");
- // 发送邮件
- mailSender.send(simpleMailMessage);
- System.out.println("邮件已发送");
- }
- /**
- * 发送包含HTML文本的邮件
- * @throws Exception
- */
- @Test
- public void sendHtmlMail() throws Exception {
- MimeMessage mimeMessage = mailSender.createMimeMessage();
- MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);
- mimeMessageHelper.setTo("lianggzone@163.com");
- mimeMessageHelper.setFrom("lianglevel@163.com");
- mimeMessageHelper.setSubject("Spring Boot Mail 邮件测试【HTML】");
- StringBuilder sb = new StringBuilder();
- sb.append("<html><head></head>");
- sb.append("<body><h1>spring 邮件测试</h1><p>hello!this is spring mail test。</p></body>");
- sb.append("</html>");
- // 启用html
- mimeMessageHelper.setText(sb.toString(), true);
- // 发送邮件
- mailSender.send(mimeMessage);
- System.out.println("邮件已发送");
- }
- /**
- * 发送包含内嵌图片的邮件
- * @throws Exception
- */
- @Test
- public void sendAttachedImageMail() throws Exception {
- MimeMessage mimeMessage = mailSender.createMimeMessage();
- // multipart模式
- MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
- mimeMessageHelper.setTo("lianggzone@163.com");
- mimeMessageHelper.setFrom("lianglevel@163.com");
- mimeMessageHelper.setSubject("Spring Boot Mail 邮件测试【图片】");
- StringBuilder sb = new StringBuilder();
- sb.append("<html><head></head>");
- sb.append("<body><h1>spring 邮件测试</h1><p>hello!this is spring mail test。</p>");
- // cid为固定写法,imageId指定一个标识
- sb.append("<img src=\"cid:imageId\"/></body>");
- sb.append("</html>");
- // 启用html
- mimeMessageHelper.setText(sb.toString(), true);
- // 设置imageId
- FileSystemResource img = new FileSystemResource(new File("D:/images/01.jpg"));
- mimeMessageHelper.addInline("imageId", img);
- // 发送邮件
- mailSender.send(mimeMessage);
- System.out.println("邮件已发送");
- }
- /**
- * 发送包含附件的邮件
- * @throws Exception
- */
- @Test
- public void sendAttendedFileMail() throws Exception {
- MimeMessage mimeMessage = mailSender.createMimeMessage();
- // multipart模式
- MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "utf-8");
- mimeMessageHelper.setTo("lianggzone@163.com");
- mimeMessageHelper.setFrom("lianglevel@163.com");
- mimeMessageHelper.setSubject("Spring Boot Mail 邮件测试【附件】");
- StringBuilder sb = new StringBuilder();
- sb.append("<html><head></head>");
- sb.append("<body><h1>spring 邮件测试</h1><p>hello!this is spring mail test。</p></body>");
- sb.append("</html>");
- // 启用html
- mimeMessageHelper.setText(sb.toString(), true);
- // 设置附件
- FileSystemResource img = new FileSystemResource(new File("D:/images/01.jpg"));
- mimeMessageHelper.addAttachment("image.jpg", img);
- // 发送邮件
- mailSender.send(mimeMessage);
- System.out.println("邮件已发送");
- }
- }
源代码
相关示例完整代码: springboot-action
(完)
如果觉得我的文章对你有帮助,请随意打赏。

- 版权声明:本文由 梁桂钊 发表于 梁桂钊的博客
- 转载声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证),非商业转载请注明作者及出处,商业转载请联系作者本人。
- 文章标题:Spring Boot 揭秘与实战(七) 实用技术篇 - Java Mail 发送邮件
- 文章链接:http://blog.720ui.com/2017/springboot_07_othercore_javamail/
Spring Boot 揭秘与实战(七) 实用技术篇 - Java Mail 发送邮件的更多相关文章
- Spring Boot 揭秘与实战(七) 实用技术篇 - StateMachine 状态机机制
文章目录 1. 环境依赖 2. 状态和事件 2.1. 状态枚举 2.2. 事件枚举 3. 状态机配置4. 状态监听器 3.1. 初始化状态机状态 3.2. 初始化状态迁移事件 5. 总结 6. 源代码 ...
- Spring Boot 揭秘与实战(七) 实用技术篇 - 异步任务
文章目录 1. Spring Boot 集成异步任务 2. 单发服务模式 3. 请求应答模式 4. 源代码 Spring 对异步任务具有很好的支持.这篇文章,我们透过 Spring Boot 来讲解下 ...
- Spring Boot 揭秘与实战(七) 实用技术篇 - FreeMarker 模板引擎
文章目录 1. FreeMaker 代替 JSP 作为页面渲染 2. 生成静态文件 3. 扩展阅读 4. 源代码 Spring Boot 提供了很多模板引擎的支持,例如 FreeMarker.Thym ...
- Spring Boot 揭秘与实战 附录 - Spring Boot 公共配置
Spring Boot 公共配置,配置 application.properties/application.yml 文件中. 摘自:http://docs.spring.io/spring-boot ...
- Spring Boot 揭秘与实战 自己实现一个简单的自动配置模块
文章目录 1. 实战的开端 – Maven搭建 2. 参数的配置 - 属性参数类 3. 真的很简单 - 简单的服务类 4. 自动配置的核心 - 自动配置类 5. spring.factories 不要 ...
- Spring Boot 揭秘与实战 源码分析 - 工作原理剖析
文章目录 1. EnableAutoConfiguration 帮助我们做了什么 2. 配置参数类 – FreeMarkerProperties 3. 自动配置类 – FreeMarkerAutoCo ...
- Spring Boot 揭秘与实战 源码分析 - 开箱即用,内藏玄机
文章目录 1. 开箱即用,内藏玄机 2. 总结 3. 源代码 Spring Boot提供了很多”开箱即用“的依赖模块,那么,Spring Boot 如何巧妙的做到开箱即用,自动配置的呢? 开箱即用,内 ...
- Spring Boot 揭秘与实战(九) 应用监控篇 - 自定义监控端点
文章目录 1. 继承 AbstractEndpoint 抽象类 2. 创建端点配置类 3. 运行 4. 源代码 Spring Boot 提供的端点不能满足我们的业务需求时,我们可以自定义一个端点. 本 ...
- Spring Boot 揭秘与实战(九) 应用监控篇 - HTTP 健康监控
文章目录 1. 内置 HealthIndicator 监控检测 2. 自定义 HealthIndicator 监控检测 3. 源代码 Health 信息是从 ApplicationContext 中所 ...
随机推荐
- Wannafly挑战赛22-A/B/C
链接:https://www.nowcoder.com/acm/contest/160/A来源:牛客网 题目描述 有一个计数器,计数器的初始值为0,每次操作你可以把计数器的值加上a1,a2,...,a ...
- hdu-6406-dp+ST表
Taotao Picks Apples Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Ot ...
- awr相关
手工生成awr快照SQL> exec dbms_workload_repository.create_snapshot; PL/SQL procedure successfully comple ...
- Leetcode 980. 不同路径 III
980. 不同路径 III 显示英文描述 我的提交返回竞赛 用户通过次数42 用户尝试次数43 通过次数46 提交次数60 题目难度Hard 在二维网格 grid 上,有 4 种类型的方格: 1 ...
- ECharts 报表事件联动系列四:柱状图,折线图,饼状图实现联动
代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...
- Fiddler 抓包工具总结【转载】
原博主连接在文章底部 Fiddler是一个蛮好用的抓包工具,可以将网络传输发送与接受的数据包进行截获.重发.编辑.转存等操作.也可以用来检测网络安全.反正好处多多,举之不尽呀!当年学习的时候也蛮费劲, ...
- MapReduce分布式算法
一.MapReduce 有一种特殊的并行算法,就是分布式算法.在并行算法只需要两个到四个内核时,完全可以在笔记本电脑上运行,但是如果需要数百个内核,这种情况下,可让算法在多台计算机上运行. 假设你有一 ...
- 深入浅出php socket编程
对TCP/IP.UDP.Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵.那么我想问: 1.什么是TCP/IP.UDP?2.Socket在哪里呢?3.Socket是什么 ...
- jquery select使用
<select class="selector"></select> 1) 设置选中值为pxx的选项 $('.selector').val('pxx'); ...
- http协商缓存VS强缓存
之前一直对浏览器缓存只能描述一个大概,深层次的原理不能描述上来:终于在前端的两次面试过程中被问倒下,为了泄恨,查阅一些资料最终对其有了一个更深入的理解,废话不多说,赶紧来看看浏览器缓存的那些事吧,有不 ...