- 浏览: 3547938 次
- 性别:
- 来自: 大连
博客专栏
-
使用Titanium Mo...
浏览量:38135
-
Cordova 3.x入门...
浏览量:607261
-
常用Java开源Libra...
浏览量:682256
-
搭建 CentOS 6 服...
浏览量:89318
-
Spring Boot 入...
浏览量:401805
-
基于Spring Secu...
浏览量:69685
-
MQTT入门
浏览量:91692
文章分类
最新评论
-
afateg:
阿里云的图是怎么画出来的?用什么工具?
各云服务平台的架构图 -
cbn_1992:
博主,采用jdbctoken也就是数据库形式之后,反复点击获取 ...
Spring Security OAuth2 Provider 之 数据库存储 -
ipodao:
写的很是清楚了,我找到一份中文协议:https://mcxia ...
MQTT入门(6)- 主题Topics -
Cavani_cc:
还行
MQTT入门(6)- 主题Topics -
fexiong:
博主,能否提供完整源码用于学习?邮箱:2199611997@q ...
TensorFlow 之 构建人物识别系统
(1)配置
pom.xml
application.properties
*** 一般只需要配置spring.mail.host属性即可。
(2)文本邮件
(3)HTML邮件
(4)带附件邮件
设置特殊编码
(5)Template模板
无论thymeleaf或freemarker都可以。(使用FreeMarker居多)
模板文件
src/main/resources/templates/email
(6)国际化对应
传入locale
模板文件
src/main/resources/templates/email
(7)异步发送邮件
开启异步支持@EnableAsync
设置@Async
(8)测试
FakeSMTP https://github.com/Nilhcem/FakeSMTP
smtp4dev https://github.com/rnwood/smtp4dev
Papercut https://github.com/changemakerstudios/papercut
GreenMail https://github.com/greenmail-mail-test/greenmail
代码示例
pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
application.properties
引用
spring.mail.host=localhost
spring.mail.protocol=smtp # Protocol
spring.mail.port=25 # SMTP server port.
spring.mail.username= # Login user of the SMTP server.
spring.mail.password= # Login password of the SMTP server.
spring.mail.default-encoding=UTF-8 # Default MimeMessage encoding.
# Additional JavaMail session properties.
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.protocol=smtp # Protocol
spring.mail.port=25 # SMTP server port.
spring.mail.username= # Login user of the SMTP server.
spring.mail.password= # Login password of the SMTP server.
spring.mail.default-encoding=UTF-8 # Default MimeMessage encoding.
# Additional JavaMail session properties.
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
*** 一般只需要配置spring.mail.host属性即可。
(2)文本邮件
@Service public class MailService { @Autowired private JavaMailSender mailSender; public void sendMail(String from, String to, String subject, String msg) { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to); message.setSubject(subject); message.setText(msg); mailSender.send(message); } }
(3)HTML邮件
引用
message.setText("<html><h1>HTML EMAIL</h1></html>", true);
(4)带附件邮件
引用
File attachmentFile = new File("d://test.txt");
FileSystemResource file = new FileSystemResource(attachmentFile);
messageHelper.addAttachment("test.txt", file);
FileSystemResource file = new FileSystemResource(attachmentFile);
messageHelper.addAttachment("test.txt", file);
设置特殊编码
引用
File attachmentFile = new File("d://test.csv");
String csv = FileUtils.readFileToString(attachmentFile, "GBK");
javax.activation.DataSource dataSource = new ByteArrayDataSource(csv, "text/csv; charset=GBK");
messageHelper.addAttachment("test.csv", dataSource);
String csv = FileUtils.readFileToString(attachmentFile, "GBK");
javax.activation.DataSource dataSource = new ByteArrayDataSource(csv, "text/csv; charset=GBK");
messageHelper.addAttachment("test.csv", dataSource);
(5)Template模板
无论thymeleaf或freemarker都可以。(使用FreeMarker居多)
@Service public class MailService { @Autowired private JavaMailSender mailSender; @Autowired private TemplateEngine thymeleafTemplateEngine; @Autowired private Configuration freemarkerConfiguration; public void prepareAndSend(SimpleMailMessage msg, Map<String, Object> tplVariables) { MimeMessagePreparator preparator = new MimeMessagePreparator() { public void prepare(MimeMessage mimeMessage) throws Exception { MimeMessageHelper message = new MimeMessageHelper(mimeMessage); message.setTo(msg.getTo()); message.setFrom(msg.getFrom()); message.setSubject(msg.getSubject()); String body = buildThymeleaf(tplVariables); message.setText(body, true); } }; try { mailSender.send(preparator); } catch (MailException e) { // ... } } public String buildThymeleaf(String templateName, Map<String, Object> model) { Context context = new Context(); context.setVariables(model); return templateEngine.process(templateName, context); } public String buildFreeMarker(String templateName, Map<String, Object> model) { Template tpl = freemarkerConfiguration.getTemplate(templateName); return FreeMarkerTemplateUtils.processTemplateIntoString(tpl, model); } }
模板文件
src/main/resources/templates/email
引用
template_name.html
或
template_name.tpl
或
template_name.tpl
(6)国际化对应
传入locale
public String buildThymeleaf(String templateName, Map<String, Object> model, Locale locale) { Context context = new Context(locale); context.setVariables(model); return templateEngine.process(templateName, context); } public String buildFreeMarker(String templateName, Map<String, Object> model, Locale locale) { Template tpl = freemarkerConfiguration.getTemplate(templateName, locale); return FreeMarkerTemplateUtils.processTemplateIntoString(tpl, model); }
模板文件
src/main/resources/templates/email
引用
template_name.html
template_name_zh.html
template_name_ja.html
或
template_name.tpl
template_name_zh.tpl
template_name_ja.tpl
template_name_zh.html
template_name_ja.html
或
template_name.tpl
template_name_zh.tpl
template_name_ja.tpl
(7)异步发送邮件
开启异步支持@EnableAsync
@EnableAsync // 追加 @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
设置@Async
@Async public void sendMail(String from, String to, String subject, String msg) { // ... }
(8)测试
FakeSMTP https://github.com/Nilhcem/FakeSMTP
smtp4dev https://github.com/rnwood/smtp4dev
Papercut https://github.com/changemakerstudios/papercut
GreenMail https://github.com/greenmail-mail-test/greenmail
代码示例
@Service public class MailService { @Autowired private JavaMailSender mailSender; @Autowired private TemplateEngine thymeleafTemplateEngine; @Autowired private Configuration freemarkerConfiguration; public void sendTextMail(String from, String to, String subject, String text) { return sendMail(from, to, subject, text, false); } public void sendHtmlMail(String from, String to, String subject, String htmlBody) { return sendMail(from, to, subject, htmlBody, true); } public void sendMail(String from, String to, String subject, String msg, Boolean isHtml) { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to); message.setSubject(subject); message.setText(msg, isHtml); mailSender.send(message); } public void prepareAndSend(SimpleMailMessage msg, Map<String, Object> tplVariables) { MimeMessagePreparator preparator = new MimeMessagePreparator() { public void prepare(MimeMessage mimeMessage) throws Exception { MimeMessageHelper message = new MimeMessageHelper(mimeMessage); message.setTo(msg.getTo()); message.setFrom(msg.getFrom()); message.setSubject(msg.getSubject()); String body = buildThymeleaf(tplVariables); // ... message.setText(body, true); } }; try { mailSender.send(preparator); } catch (MailException e) { // ... } } public String buildThymeleaf(String templateName, Map<String, Object> model) { Context context = new Context(); context.setVariables(model); return templateEngine.process(templateName, context); } public String buildThymeleaf(String templateName, Map<String, Object> model, Locale locale) { Context context = new Context(locale); context.setVariables(model); return templateEngine.process(templateName, context); } public String buildFreeMarker(String templateName, Map<String, Object> model) { Template tpl = freemarkerConfiguration.getTemplate(templateName); return FreeMarkerTemplateUtils.processTemplateIntoString(tpl, model); } public String buildFreeMarker(String templateName, Map<String, Object> model, Locale locale) { Template tpl = freemarkerConfiguration.getTemplate(templateName, locale); return FreeMarkerTemplateUtils.processTemplateIntoString(tpl, model); } }
发表评论
-
Spring Boot 入门 - 进阶篇(8)- 应用监控(Actuator)
2017-03-16 14:57 17572作为Spring Boot的另外一大亮点,就是actuator ... -
Spring Boot 入门 - 进阶篇(7)- 自动配置(AutoConfigure)
2017-03-16 11:05 62260自动配置是Spring Boot的最大亮点,完美的展示了CoC ... -
Spring Boot 入门 - 进阶篇(6)- 启动加载(CommandLineRunner)
2017-03-15 15:04 15090启动成功后可以通过以下方法运行自己的初始代码: @PostCo ... -
Spring Boot 入门 - 进阶篇(5)- 数据缓存(@Cacheable)
2017-03-14 16:28 34671缓存可以缓解数据库访 ... -
Spring Boot 入门 - 进阶篇(4)- REST访问(RestTemplate)
2017-03-14 11:07 45283经常需要发送一个GET/POST请求到其他系统(REST AP ... -
Spring Boot 入门 - 进阶篇(3)- 定时任务(@Scheduled)
2017-03-13 13:23 23752主要用于定时发送邮件、夜间自动维护等。 (1)开启定时任务功 ... -
Spring Boot 入门 - 进阶篇(2)- 异步调用(@Async)
2017-03-07 15:59 20085异步处理 Java的异步处理Thread/Runnable、 ... -
Spring Boot 入门 - 进阶篇(1)- Servlet、Filter、Listener、Interceptor
2017-03-07 10:39 10613用户认证授权、日志记录MDC、编码解码、UA检查、多端对应等都 ... -
Spring Boot 入门 - 基础篇(15)- 工程部署
2017-02-16 15:31 9052(1)开发阶段 一般开发过程: 1)-写代码 2)- [Ru ... -
Spring Boot 入门 - 基础篇(14)- 参数设置
2017-02-16 15:25 5734(1)读取优先顺序 a - 命令行参数 --key=val ... -
Spring Boot 入门 - 基础篇(13)- 异常处理
2017-02-16 10:23 8670先要了解Spring的异常处理:http://rensanni ... -
Spring Boot 入门 - 基础篇(12)- 数据校验
2017-02-16 09:53 19919除过在客户端做JavaScript数据校验外,服务器端做数据校 ... -
Spring Boot 入门 - 基础篇(11)- 数据源配置
2017-02-15 11:12 16399(1)单一数据源 默认Spring Boot会在classp ... -
Spring Boot 入门 - 基础篇(9)- 文件上传下载
2017-02-14 10:01 15888(1)单文件上传 Form方式 <form id=&qu ... -
Spring Boot 入门 - 基础篇(8)- 数据库操作
2017-02-10 16:17 8673(1)导入mybatis-spring-boot-starte ... -
Spring Boot 入门 - 基础篇(7)- 国际化
2017-02-10 13:58 13143Spring Boot默认支持国际化配置,只需要添加配置文件即 ... -
Spring Boot 入门 - 基础篇(6)- 页面模板
2017-02-09 15:00 6467Spring Boot支持很多模板引擎,但嵌入式容器JSP有限 ... -
Spring Boot 入门 - 基础篇(5)- 使用WebJars
2017-02-09 14:20 11747WebJars能使Maven的依赖管理支持OSS的JavaSc ... -
Spring Boot 入门 - 基础篇(4)- 静态资源
2017-02-09 13:10 10700静态资源包括:HTML、CSS、JS、图像、视频、PDF/Of ... -
Spring Boot 入门 - 基础篇(3)- 日志管理
2017-02-09 09:39 8482Spring Boot支持JUL,Log4J2和Logback ...
相关推荐
在本篇“Spring Boot入门 - 基础篇(11)- 数据源配置”中,我们将探讨如何在Spring Boot项目中配置数据源,以便连接到数据库并执行相关的CRUD操作。Spring Boot以其自动化配置和简化开发流程而受到广泛欢迎,它使得...
总的来说,"spring-boot-study-base.zip"是一个很好的Spring Boot入门教程,它涵盖了从基础到实践的关键知识点。通过学习和实践,你可以快速掌握Spring Boot的精髓,从而在实际开发中提高效率,构建出更加健壮和灵活...
本篇将深入探讨dbApi-spring-boot-starter的使用,结合提供的"dbApi-spring-boot-starter-demo"案例代码,帮助开发者理解和实践这一工具。 一、dbApi-spring-boot-starter简介 dbApi-spring-boot-starter的核心...
本篇文章将深入探讨Spring Boot入门项目的构建过程,以及它如何与微服务和分布式系统相结合。 **1. Spring Boot基础知识** Spring Boot 的核心理念是“约定优于配置”。它通过内置的Tomcat服务器、自动配置的Spring...
本篇将基于"spring-boot-study-master.zip"这一压缩包,深入探讨Spring Boot的核心概念及实战应用,包括Druid、Ehcache、JWT、Mybatis、Generator、Quartz、Scheduling、Shiro以及Upload等模块,旨在帮助初学者从零...
### 二、Spring Boot入门实例步骤 #### 1. 创建项目 首先,我们需要一个支持Spring Boot的IDE,如IntelliJ IDEA。然后,通过IDE的新建项目向导,选择Spring Initializr来创建一个新的Spring Boot项目。在这个向导...
在"spring boot入门篇demo+ppt"中,我们可以期待学习以下核心知识点: 1. **Spring Boot基础知识**:了解Spring Boot的基本概念,包括其设计目标、主要特性以及与其他Spring框架的关系。 2. **起步依赖(Starter)...
在本篇Spring Boot笔记中,我们将探讨Spring Boot的核心特性、如何创建一个简单的Spring Boot应用以及相关的Maven配置。Spring Boot是Spring框架的一个扩展,旨在简化Spring应用的初始搭建以及开发过程,提供了一种...
接下来,我们来看 `spring boot入门篇.pptx`,这个PPT很可能是对Spring Boot基础知识的详细讲解,可能包括以下内容: 1. **Spring Boot简介**:介绍Spring Boot的诞生背景、目标以及主要特点。 2. **环境准备**:...
通过阅读 "Spring boot(一): 入门篇.pdf" 和 "Spring boot(二):web综合开发.pdf",你可以深入了解 Spring Boot 的基本概念、快速上手指南以及如何进行 Web 应用的综合开发。这些资料将引导你从初识 Spring Boot 到...
以上是 Spring Boot 基础篇的知识点,包括 Spring Boot 简介、快速上手 Spring Boot、Spring Boot 入门案例、parent starter 引导类、内嵌 Tomcat 基础配置、配置属性配置、yaml 文件语法规则、yaml 数据读取、整合...
- **Starters**: Spring Boot 提供了一系列的 Starter POMs,用于快速搭建项目所需的基础结构。 - **代码结构**: - **默认包**: 建议使用默认包还是自定义包结构。 - **主应用类定位**: 主类的位置对自动配置和...
本篇笔记将介绍Spring Boot的核心概念、微服务架构、环境准备、入门案例以及相关开发工具的配置方法。 1. Spring Boot简介 Spring Boot是由Pivotal团队提供的开源框架,它使用“约定优于配置”的原则,旨在简化...
在上一部分中,我们可能已经介绍了Spring Boot的基础知识和快速入门。在此阶段,我们将更进一步,通过代码示例深入了解Spring Boot的核心特性以及如何集成常用的数据库连接池Druid和SQL监控工具P6Spy。 首先,...
- **基础篇**:介绍 Spring Boot 的基本概念、安装和配置等基础知识。 - **进阶篇**:探讨如何利用 Spring Boot 构建复杂的应用程序,包括安全性和性能优化等方面。 - **实践篇**:提供一系列实战案例,涵盖微服务...
为了更好地理解和掌握 Spring Boot,本文将围绕其入门篇进行详细介绍。 #### 二、Spring Boot 的核心价值 1. **自动配置**:Spring Boot 提供了一系列的自动配置选项,这意味着开发者无需编写大量的配置代码,框架...
在本篇【springBoot笔记二-来自于百度文库1】中,主要讲解了Spring Boot的基础概念、核心特性以及如何创建一个简单的Spring Boot项目。以下是详细的知识点解析: 1. **Spring Boot简介**: - Spring Boot是Spring...
"基础篇-03-SpringBoot入门案例(Idea联网版).mp4"和"基础篇-06-SpringBoot入门案例(手工制作版).mp4"通过实例演示了如何在IntelliJ IDEA中创建和配置Spring Boot项目,讲解了Spring Initializr的使用,以及如何...
在本篇博客“Spring Boot / Spring MVC 入门实践(三):入门项目介绍与用户注册登录的实现”中,我们将深入探讨如何使用Spring Boot和Spring MVC构建一个基础的Web应用,涵盖用户注册和登录的功能。这个源码将提供...
在本压缩包“SpringCloud入门基本代码(基础篇)”中,我们将会探索Spring Cloud的基础概念和实践。Spring Cloud是一个微服务开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、...