一提到springboot整合,我们应该可以想到哪几个步骤。
无非就是
!导入要整合的jar包依赖
!在springboot中作配置
!然后操作
!测试
下面我们就按照这个套路来就行了
1.首先导入springboot整合javamail的坐标依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.hb</groupId>
<artifactId>springboot2-mail</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot2-mail</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- 这个就是我们要导入的坐标-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.下面就是我们配置相关的信息
spring:
mail:
host: smtp.qq.com
username: xxxxxxxxxx@qq.com
password: **************
下面这里我就要说明一下了,为了防止我的信息泄露这个我给大家解释一下
host:这个属性就是你要用那个邮箱,我这个用的qq邮箱发送的。如果你想用123邮箱,只要改成什smtp.123.com
username:这个属性就是你你要用哪个账号进行发送,这里我们就以qq邮箱发送为例,所以这个就是填写你的你要进行发送的qq邮箱
password:这个属性你可不要以为是你自己的账号密码;这个是由邮件服务器通过加密生成的一个授权码;
上面两个属性我们很好获取。那么这个password要如何获取呢 别着急其实很简单
首先我们打开qq邮箱先进入设置-》帐户页面找到入口,按照以下流程操作。
这时我们的配置基本完成了;
3.下面就是操作客户端了
首先你要明白我们现在在做的是什么?它不就是个业务吗
所以我们只需要创建一个业务层就可以了,这里的业务暂时用不到数据层
下面我们开始编写业务层接口,再是创建业务层的实现类
下面我们就可以进行操作了
首先我们既然已经对JavaMail进行了整合那么我们就可以直接将这个类注入了
@Service
public class sendMailServiceImpl implements sendMailService{
@Autowired
//注入这个类 我们springboot此时已经整合了JavaMail 可以直接注入进行发送邮件的操作
private JavaMailSender javaMailSender;
接下来就是我们就可以发送邮件了
//利用这个方法发送邮件
javaMailSender.send(message);
这样我们就可以发送邮件了,这个message我们同样也要创建出来
//利用这个类来配置发送邮件的信息
SimpleMailMessage message =new SimpleMailMessage();
我们这个实现是是一个简单的邮件发送
现在大家可以思考一下了,你在平时进行发送邮件是如何发送的
我们是不是要有收件人,标题,正文啊,同样我们还要有发件人。
所以你说你在使用第三方客户端发送时需不需要这些信息。答案是肯定的啊
下面我们就定义这个四个信息
//发送人
private String from="xxxxxxxxqq.com";
//接收人
private String to="xxxxxxxqq.com";
//标题
private String subject="一个简单邮件";
//正文
private String context="这是个简单邮件";
同样这个为了隐私保护你们懂的
下面我们只需要进行配置就OK了
SimpleMailMessage message =new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject(subject);
message.setText(context);
是不是很方便,我们刚才定义的,他这个提供的都有对应的配置
完整的业务代码如下
@Service
public class sendMailServiceImpl implements sendMailService{
@Autowired
//注入这个类 我们springboot此时已经整合了JavaMail 可以直接注入进行发送邮件的操作
private JavaMailSender javaMailSender;
//发送人
private String from="xxxxxxxxqq.com";
//接收人
private String to="xxxxxxxqq.com";
//标题
private String subject="一个简单邮件";
//正文
private String context="这是个简单邮件";
@Override
public void sendMail() {
//利用这个类来配置发送邮件的信息
SimpleMailMessage message =new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject(subject);
message.setText(context);
//利用这个方法发送邮件
javaMailSender.send(message);
}
}
好了现在我们只需要下一步测试环节了
@SpringBootTest
class Springboot2MailApplicationTests {
@Autowired
private sendMailServiceImpl sendMailService;
@Test
void contextLoads() {
sendMailService.sendMail();
}
}
好了可以看到我们运行成功。这是只需要去邮箱中进行查收就OK了。
下面大家就可以动手操作一下了
那么很多小伙伴又要问了,我平时发邮件还可以发送附件呢,其实我们同样也可以,不但可以发送附件,它还可以识别html的一些操作
接下来就为大家再扩展一下多部件的邮件发送
操作和我们刚刚简单邮件的发送一模一样
只要改动我们业务层的代码就可以了。这里我们再创建一个多部件邮件发送的方法
和简单邮件不一样的时这里的messag我们要用 MimeMessage ,代表你要发送的邮件是多部件邮件
然后我们要利用
MimeMessageHelper helper = new MimeMessageHelper(message,true);
去设置邮件了
这个操作还是和简单邮件比较类似的
MimeMessage message = javaMailSender.createMimeMessage();
//再使用这个api设置邮件
//这里true代表你要发附件邮件,只要这里为true才可以发文件
MimeMessageHelper helper = new MimeMessageHelper(message,true);
首先给大家讲解如何在正文中识别html标签。我们可以发送一个链接,和一个图片通过网络路径
我们找到刚刚配置Text的方法
按着ctrl+B就可以进入这个方法内部
可以看到这个方法的参数中有个boolean html 的参数 相信聪明的小伙伴已经明白了
这个就是是否开启识别html标签
我们只要在
helper.setText(context,true);//这个含义是识别html的标签
添加一个true就可以了
在正文中
private String context="你爱不爱PlayBoy"+"<a href='https://www.bilibili.com/video/BV1TM4y1w7kc?spm_id_from=333.337.search-card.all.click'>点开有惊喜</a>";
写上这个链接的标签就可以了
然后在测试类中测试
@SpringBootTest
class Springboot2MailApplicationTests {
@Autowired
private sendMailServiceImpl sendMailService;
@Test
void test() {
sendMailService.sendMimeMail();
}
}
效果图
你点开链接就可以进行跳转了
我们同样也可以发送附件
我们按ctrl+B进入 MimeMessageHelper helper = new MimeMessageHelper(message,true);
我们可以看到true就代表着是否开启多部件的发送
下面我们就可以创建文件然后利用helper进行配置了
//发送本地文件也是可以
File file=new File("D:\\idea_place\\work\\springboot2-mail\\target\\springboot2-mail-0.0.1-SNAPSHOT.jar");
File file1=new File("D:\\idea_place\\work\\springboot2-mail\\src\\main\\java\\com\\hb\\img\\s2.jpg");
//利用这个方法将文件作为附件发过去
helper.addAttachment(file.getName(),file);
helper.addAttachment("海景图.png",file1);
这样我们就完成了
再次进行测试就ok了
这就是发送成功后的效果图
这部分的完整代码也给你们
//实现发送多部件邮件
@Override
public void sendMimeMail() {
try {
//再利用javaMailsender创建一个多部件的邮件
MimeMessage message = javaMailSender.createMimeMessage();
//再使用这个api设置邮件
//这里true代表你要发附件邮件,只要这里为true才可以发文件
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setFrom(from+"(鹿晗)");
helper.setTo(to);
helper.setSubject(subject);
helper.setText(context,true);//这个含义是识别html的标签
//发送本地文件也是可以
File file=new File("D:\\idea_place\\work\\springboot2-mail\\target\\springboot2-mail-0.0.1-SNAPSHOT.jar");
File file1=new File("D:\\idea_place\\work\\springboot2-mail\\src\\main\\java\\com\\hb\\img\\s2.jpg");
//利用这个方法将文件作为附件发过去
helper.addAttachment(file.getName(),file);
helper.addAttachment("海景图.png",file1);
javaMailSender.send(message);
} catch (Exception e) {
e.printStackTrace();
}
}
现在你就可以自己动手去操作了;
谢谢你阅读,请多多关注我。一个在校大二大学生,如果有些地方不够严谨还请多多包含;你也可以私信我一起交流学习。谢谢大家!