SpringBoot集成EMail

在大部分项目中,我们都会经常有用到邮件工具;不管是邮件验证码、邮件注册校验、预警通知等服务,都会使用到我们的email来发送邮件。下面我们就来教大家如何使用SpringBoot中使用email来发送邮件:

  1. 登录需要做完发送邮件的账户,我这边用的是网易邮箱,所以就登录到网易的163邮箱就行,其他邮箱的账户登录到自己所在邮箱网站即可。
  2. 找到设置==>客户端设置(不同邮箱名字不同,163邮箱则是POP3/SMTP/IMAP),就会看到以下页面,开启需要使用的服务即可,我们这边使用的是IMPAP/SMTP
  3. 新增授权码,点击新增授权码,按照提示扫码发送短信,或者手动发送短信即可。然后就可以看到您新的授权码了。
  4. 新增授权码后,记住授权码后面要用。

项目中使用EMail

第一步: 导入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.3.12.RELEASE</version>
</dependency>

第二步: 配置email发送服务

spring:mail:host: "smtp.163.com" # 发件服务器地址,不同邮件平台地址不同port: 25 #常用邮件端口25、109、110、143、465、995、993、994 如果开启了SSL安全则使用对应的端口号,25为非加密端口号username: admin@163.com #发送邮件的账号password: 123456 #发送邮件账号的授权码,这里的授权码不是验证码.需要到邮箱default-encoding: utf-8 #设置编码properties: # 设置邮件超时时间防止服务器阻塞timeout: 5000connection-timeout: 5000write-timeout: 5000

第三步: 发送一份简单的邮件

@Autowired
private JavaMailSender mailSender;public void sendEMail(EMailCmd eMailCmd) {try {SimpleMailMessage simpleMailMessage = new SimpleMailMessage();simpleMailMessage.setFrom(sendUserName); //设置发送邮件账号simpleMailMessage.setTo("123@163.com"); //设置接收邮件的人,可以多个simpleMailMessage.setSubject(eMailCmd.getSubject()); //设置发送邮件的主题simpleMailMessage.setText(eMailCmd.getText()); //设置发送邮件的内容mailSender.send(simpleMailMessage);} catch (MailException e) {log.error("邮件发送失败!");}
}
//发送带HTML内容的邮件@Autowiredprivate JavaMailSender mailSender;public void sendHtmlEMail(EMailCmd eMailCmd) {try {MimeMessage message = mailSender.createMimeMessage();MimeMessageHelper minehelper = new MimeMessageHelper(message, true);minehelper.setFrom(sendUserName); //设置发送邮件账号minehelper.setTo(eMailCmd.getTos()); //设置接收邮件的人,可以多个minehelper.setSubject(eMailCmd.getSubject()); //设置发送邮件的主题minehelper.setText(eMailCmd.getText(),true); //设置发送邮件的内容 第二个设置为true则可以发送带HTML的邮件mailSender.send(message);} catch (MessagingException e) {log.error("邮件发送失败!");}}

发送模板类型的邮件:

  1. 导入需要的模板依赖
<!-- thymeleaf模板 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId><version>2.3.12.RELEASE</version>
</dependency>
  1. 配置对应的模板路径
spring:thymeleaf:cache: falsemode: LEGACYHTML5 #类型prefix: classpath:/templates/ #模板存放的位置suffix: .html #模板的后缀
  1. 创建一个方法获得动态模板内容
@Autowiredprivate TemplateEngine templateEngine;/*** 获得验证码模板** @param email 用户邮箱* @param code 验证码* @param timeout 超时时间* @return*/
public String getCaptchaTempl(String email, String code, int timeout) {Context context = new Context();//设置模板所需的参数     context.setVariable("title","验证码");context.setVariable("email",email);context.setVariable("code",code);context.setVariable("date",DateUtils.format(new Date(),"yyyy-MM-dd hh:mm:ss"));//通过模板类将动态参数传入HTML模板,并返回模板内容 参数一:模板名字,参数二:动态参数Web文本String content = templateEngine.process("/mailCode", context);return content;}
  1. HTML页面中使用我们设置的动态参数
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>[[${title}]]</title>
</head>
<body>
<div style="background-color:#ECECEC; padding: 15px;"><table cellpadding="0" align="center"style="width: 600px; margin: 0px auto; text-align: left; position: relative; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; font-size: 14px; font-family:微软雅黑, 黑体; line-height: 1.5; box-shadow: rgb(153, 153, 153) 0px 0px 5px; border-collapse: collapse; background-position: initial initial; background-repeat: initial initial;background:#fff;"><tbody><tr><th valign="middle"style="height: 25px; line-height: 25px; padding: 15px 35px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #42a3d3; background-color: #49bcff; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px;"><font face="微软雅黑" size="5" style="color: rgb(255, 255, 255); ">邮箱注册</font></th></tr><tr><td><div style="padding:25px 35px 40px; background-color:#fff;"><h2 style="margin: 5px 0px; "><font color="#333333" style="line-height: 20px; "><font style="line-height: 22px; " size="4">亲爱的<b>[[${email}]]</b>用户,您好:</font></font></h2><p>首先感谢您加入本商城!请在验证页面输入以下验证码:<br><b style="font-size: 18px">[[${code}]]</b><br>本验证码5分钟内有效,为了保障您的账户安全,请勿向任何人提供此验证码。感谢您的支持!<br>如果您有什么疑问可以联系管理员,Email: admin@163.com</p><p align="right">商城</p><p align="right">[[${date}]]</p><div style="width:700px;margin:0 auto;"><div style="padding:10px 10px 0;border-top:1px solid #ccc;color:#747474;margin-bottom:20px;line-height:1.3em;font-size:12px;"><p>本邮件系统自动发送,请勿回复!<br>请保管好您的邮箱,避免账号被他人盗用</p><p>©***</p></div></div></div></td></tr></tbody></table>
</div>
</body>
</html>

SpringBoot集成EMail相关推荐

  1. SpringBoot集成FreeMarker

    给大家简单介绍一下springboot 集成FreeMarker 过程很简单,5分钟即可. 首先在项目中增添依赖spring-boot-starter-freemarker pom文件代码如下: &l ...

  2. springboot集成swagger2测试接口

    springboot集成swagger2测试接口 1.需要的依赖 2.开始编写一个swagger2 3.演示效果图片 1.需要的依赖 <dependency><groupId> ...

  3. java整合mybatis,springboot集成mybatis

    # springboot集成mybatis springboot基础mybatis还是很简单的,比之前springmvc集成mybatis要少很多配置,只要大家按照步骤一步一步来,几分钟就 能实现.具 ...

  4. Java技术:SpringBoot集成FreeMarker生成word文件

                    今天给大家分享SpringBoot集成FreeMarker模板引擎生成word文件的用法,感兴趣的可以学一下,完整源码地址在文章末尾处,欢迎互相沟通交流! 一.什么是F ...

  5. 项目构建之springboot集成lomback.xml,和log4j基于properties方式的日志配置记录

    文章目录 springboot集成lomback.xml 描述 在yml中定义的一些配置信息 创建logback-spring.xml文件 logback-spring.xml配置如下: **log4 ...

  6. SpringBoot集成Cache缓存(Redis缓存,RedisTemplate方式)

    1.说明 SpringBoot集成Redis缓存, 首先创建一个Spring Boot工程, 使用Maven向导方式创建:SpringBoot集成Maven工程 然后引入redis的spring bo ...

  7. SpringBoot集成Cache缓存(Ehcache缓存框架,注解方式)

    1.说明 Spring定义了CacheManager和Cache接口, 用来统一不同的缓存技术, 例如JCache,EhCache,Hazelcast,Guava,Redis等. 本文通过Spring ...

  8. SpringBoot集成Log4j2框架

    1.说明 本文详细介绍Spring Boot集成Log4j2框架的方法, 基于已经创建好的Spring Boot工程, 由于Spring Boot默认使用的是Logback框架, 需要先排除掉Logb ...

  9. SpringBoot集成MyBatis-Plus框架详细方法

    1.说明 本文详细介绍Spring Boot集成MyBatis-Plus框架的方法, 使用MySQL数据库进行测试, 包括完整的开发到测试步骤, 从一开始的Spring Boot工程创建, 到MySQ ...

最新文章

  1. ubuntu虚拟机apt报错:No module named ‘uaclient‘(替换所有的python3为/usr/bin/python3)xftp、xshell不能连接
  2. Quick BI助力云上大数据分析---深圳云栖大会
  3. [Android] Implementation vs API dependency
  4. linux ssh服务端下载文件,Linux SSH服务端配置文件设置
  5. 【Mongodb】用户和认证 权限总结
  6. mysql全表重命名备份_MySQL数据库重命名的快速且安全方法(3种)
  7. Python报错: RuntimeError: The current Numpy installation (‘D:\\Develop\\anaconda\\lib\\site-packages\\
  8. unity3d做会减少的血条_Unity 3D 血条制作
  9. DNA序列的机器学习方法
  10. 怎么把竖线去掉_怎么去掉word竖线
  11. Docsify+github/gitee搭建个人博客
  12. 高数 07.04 多元复合函数的求导法则
  13. 什么样的商业计划书才是投资人喜欢的
  14. 2019小米java开发
  15. 数字化转型定义及优秀案例
  16. cJSON详细剖析(四)----cJSON_Print()函数
  17. 如何使用沙盘多开流量精灵,流量精灵多开有用吗
  18. OPPO R9S怎么刷机 OPPO R9S的刷机教程 OPPO R9S完美解除账号锁
  19. OC - Association 关联对象
  20. 用java编写一个魔塔地图生成器

热门文章

  1. PCB过孔、背钻注意要点详解
  2. buuctf-pwn write-ups (6)
  3. 第三周总结(2018-03-12~2018-03-16)
  4. 纳米器件,量子点理论文献拾遗
  5. 哈勃深空场以及星系合并的宇宙瑰丽景象
  6. 互联网公司常用的DevOps 工具,你都认识吗?
  7. 期货与现货结合(期货与现货结合的例子)
  8. epoll_create详解
  9. 【C++】计算一个正整数的阶乘
  10. 数据结构(线性表树图)