SpringBoot任务之详解邮件任务
作者:Z && Y 发布时间:2021-08-12 12:49:16
标签:SpringBoot,邮件,任务
01: 异步任务
02: 定时任务
一、SpringBoot--任务:邮件任务
1.1 添加依赖(增加邮件支持)
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
1.2 获取第三方授权码
1.2.1 登录QQ邮箱
1.2.2 点击设置
1.2.3 切换到账户
1.2.4 开启服务
1.2.5 验证密保
1.2.6 成功获取授权码
这是为了不直接暴露QQ密码设置的机制
ljoghujwhbkpbaff
1.2.7 保存更改(左下角)
1.3 配置邮件信息
application.properties
# qq邮箱
spring.mail.username=1585526224@qq.com
# 刚刚生成的授权码
spring.mail.password=ljoghujwhbkpbaff
# qq邮箱的host
spring.mail.host=smtp.qq.com
#开启加密验证(qq邮箱)
spring.mail.properties.mail.smtp.ssl.enable=true
1.4 简单邮件发送
直接调用SpringBoot
的JavaMailSenderImpl
类,使用SimpleMailMessage
发送简单邮件
EmaildemoApplicationTests.java
package com.tian.emaildemo;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
@SpringBootTest
class EmaildemoApplicationTests {
@Autowired
JavaMailSenderImpl mailSender;
@Test
void contextLoads() {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
// 邮件主题
simpleMailMessage.setSubject("你好");
// 邮件文本
simpleMailMessage.setText("Hello world");
// 接收方
simpleMailMessage.setTo("1585526224@qq.com");
// 发送方
simpleMailMessage.setFrom("1585526224@qq.com");
// 发送邮件
mailSender.send(simpleMailMessage);
}
}
运行结果:
1.5 复杂邮件发送
调用mailSender.createMimeMessage()
并使用MimeMessageHelper
配置邮件内容,发送即可,邮件内容后设置为true
可以解析html
格式的内容
EmaildemoApplicationTests.java
@Test
void contextLoads() throws MessagingException {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
//复杂邮件
MimeMessage mimeMessage = mailSender.createMimeMessage();
//组装
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
mimeMessageHelper.setSubject("复杂邮件");
// 发送文本: html文本
mimeMessageHelper.setText("<p style='color: orange;'>\n" +
" 海客谈瀛洲,烟涛微茫信难求;<br>\n" +
"\n" +
" 越人语天姥,云霞明灭或可睹。<br>\n" +
"\n" +
" 天姥连天向天横,势拔五岳掩赤城。<br>\n" +
"\n" +
" 天台四万八千丈,对此欲倒东南倾。<br>\n" +
"\n" +
" (四万 一作:一万)我欲因之梦吴越,一夜飞度镜湖月。<br>\n" +
"\n" +
" (度 通:渡)湖月照我影,送我至剡溪。<br>\n" +
"\n" +
" 谢公宿处今尚在,渌水荡漾清猿啼。<br>\n" +
" <br>\n" +
" 脚著谢公屐,身登青云梯。<br>\n" +
"\n" +
" 半壁见海日,空中闻天鸡。<br>\n" +
"\n" +
" 千岩万转路不定,迷花倚石忽已暝。<br>\n" +
"\n" +
" 熊咆龙吟殷岩泉,栗深林兮惊层巅。<br>\n" +
"\n" +
" 云青青兮欲雨,水澹澹兮生烟。<br>\n" +
"\n" +
" 列缺霹雳,丘峦崩摧。<br>\n" +
" <br>\n" +
" 洞天石扉,訇然中开。<br>\n" +
"\n" +
" 青冥浩荡不见底,日月照耀金银台。<br>\n" +
"\n" +
" 霓为衣兮风为马,云之君兮纷纷而来下。<br>\n" +
"\n" +
" 虎鼓瑟兮鸾回车,仙之人兮列如麻。<br>\n" +
"\n" +
" 忽魂悸以魄动,恍惊起而长嗟。<br>\n" +
" <br>\n" +
" 惟觉时之枕席,失向来之烟霞。<br>\n" +
"\n" +
" 世间行乐亦如此,古来万事东流水。<br>\n" +
"\n" +
" 别君去兮何时还?<br>\n" +
"\n" +
" 且放白鹿青崖间。<br>\n" +
"\n" +
" 须行即骑访名山。<br>\n" +
"\n" +
" 安能摧眉折腰事权贵,使我不得开心颜!<br>\n" +
" </p>", true);//true,开启html解析
// 发送图片
mimeMessageHelper.addAttachment("重庆理工大学夜景.jpg", new File("D:\\图片\\schoolNight.jpg"));
mimeMessageHelper.setTo("1585526224@qq.com");
mimeMessageHelper.setFrom("1585526224@qq.com");
mailSender.send(mimeMessage);
}
运行结果:
我不知道为什么:我写的CSS样式在电脑上面不可预见,但是在我的手机QQ邮箱确是可以看见的。欢迎知道的大神告诉我
1.6 可以把上面复杂发送邮件封装成一个方法
public void SendMail(Boolean html, String title, String text, File file, String sendTo, String sendFrom) throws MessagingException {
//复杂邮件
MimeMessage mimeMessage = mailSender.createMimeMessage();
//组装
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
mimeMessageHelper.setSubject(title);
mimeMessageHelper.setText(text, html);//true,开启html解析
mimeMessageHelper.addAttachment("1.jpg", file);
mimeMessageHelper.setTo(sendTo);
mimeMessageHelper.setFrom(sendFrom);
mailSender.send(mimeMessage);
}
来源:https://blog.csdn.net/I_r_o_n_M_a_n/article/details/117636353


猜你喜欢
- 本文实例讲述了java内部类原理与用法。分享给大家供大家参考,具体如下:概念内部类:可以包含在另外一个类中的类外部类:包含内部类的类每个内部
- 项目最终的文件结构1 添加maven依赖 <dependency> <groupI
- 本文实例为大家分享了新闻列表分页查询的java代码,供大家参考,具体内容如下package com.ibeifeng.test;//创建新闻
- 概述非对称加密算法与对称加密算法的主要差别在于非对称加密算法用于加密和解密的密钥不相同,非对称加密算法密钥分为公钥和私钥,公钥加密只能用私钥
- 一、关联映射举例关系说明数据库创建表,student,teacher关系说明:一个老师可以有多个学生一个学生只有一个老师一个老师对学生:一对
- 通常我们用惯的ListView每一项的布局都是相同的,只是控件所绑定的数据不同。但单单只是如此并不能满
- 前言日常中,我们经常需要从浏览器中的网页或者从其它APP中直接打开我们的APP,我们就需要使用到深度链接技术。实现方式分别是 Dee pLi
- 1.概述在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适。很多项目都会封装规定好本身项目的接口规范,所以大多数需要
- • 创建目录和文件1、通过Path类的Combine方法可以合并路径。string activeDir = @"C:\myDir&
- java中引用数据类型有哪些Java中有俩种数据类型,其中主要有8中基本数据类型和引用数据类型,除了8中基本数据类型以外都是引用数据类型,8
- 以前看到过个:Java开发手册(阿里巴巴-公开版),这是个pdf文档,里面描述了一些Java开发的规约,里面确实有很多好用的规约,要是在学校
- 1、JDK:Java Development Kit,java开发工具包。http://www.oracle.com/technetwork
- 应用特性:在很多复杂而小功能需要调用需求时,而且这些调用往往还有一定相关性,即一调用就是一系列的。结构特性:把原本复杂而繁多的调用,规划统一
- 以下是介绍利用List的subList方法实现对List分页,废话不多说了,直接看代码把/** *//** * List分页 &
- 在开发中,可能会遇到一对多的关系,这个时候,一条sql语句就难以胜任这个任务了。只能先执行一条sql,然后根据返回的结果,再做一次sql关联
- 概述线上项目发布一般有以下几种方案:机发布蓝绿部署滚动部署灰度发布停机发布 这种发布一般在夜里或者进行大版本升级的时候发布,因为需要停机,所
- 1. 什么是 spring-boot-devtoolsspring-boot-devtools 是 spring-boot项目开发时的一个热
- 在一些项目的实际开发过程中,我们有时候需要对GridControl中列值进行转义,譬如1转义成“完成”等等,一般在诸如CustomColum
- 背景知识同步、异步、阻塞、非阻塞首先,这几个概念非常容易搞混淆,但NIO中又有涉及,所以总结一下。同步:API调用返回时调用者就知道操作的结
- 前言假如有人问你这么几个问题,看能不能答上来Mybatis Mapper 接口没有实现类,怎么实现的 * JDK * 为什么不能对类进