Spring Boot邮件发送(powernode CD2207)(内含教训视频+源代码)
教学视频+源代码下载链接地址:
https://download.csdn.net/download/weixin_46411355/87452056
目录
- Spring Boot邮件发送(powernode CD2207)(内含教训视频+源代码)
- `教学视频+源代码下载链接地址:`[https://download.csdn.net/download/weixin_46411355/87452056](https://download.csdn.net/download/weixin_46411355/87452056)
- 一、注册并登录163邮箱
- 二、概述
- 三、案例实操
- 3.1 创建一个springboot项目
- 3.2 application.yml配置文件
- 3.3 发送普通内容的邮件
- 3.4 发送复杂内容的邮件
一、注册并登录163邮箱
注册163邮箱
登录163邮箱
点击继续开启
手机微信扫描二维码发送短信
点击开启
手机微信扫描二维码发送短信
点击“确定”
我们使用java程序发送邮件,属于使用第三方客户端发送邮件
使用第三方客户端发送右键也需要先通过认证(登录):
官方客户端认证: 用户名 密码
第三方客户端的认证:用户名 授权码
授权码需要通过发送短信开通指定功能时获取
二、概述
SpringBoot实现邮件功能是非常的方便快捷的,因为SpringBoot默认有starter实现了Mail。
发送邮件应该是网站的必备功能之一,什么注册验证,忘记密码或者是给用户发送营销信息。
最早期的时候我们会使用JavaMail
相关api来写发送邮件的相关代码,后来spring推出了JavaMailSender
更加简化了邮件发送的过程,在之后springboot对此进行了封装就有了现在的spring-boot-starter-mail
。
三、案例实操
3.1 创建一个springboot项目
这里“输入输出”勾选“Java Mail Sender”
3.2 application.yml配置文件
spring:
# 设置连接邮箱的相关信息
mail:
host: smtp.163.com
username: fbihackerharryhao@163.com
password: IFLOJXMWEFJTXBYI # 使用授权码
3.3 发送普通内容的邮件
测试类
package com.bjpowernode.springbootmailsending;
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.JavaMailSender;
@SpringBootTest
class SpringbootMailsendingApplicationTests {
//注入发送邮件的工具对象
@Autowired
private JavaMailSender javaMailSender;
/**
* 发送普通内容的邮件
*/
@Test
void contextLoads() {
//1.创建邮件对象
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
//2.设置邮件的相关信息
simpleMailMessage.setFrom("fbihackerharryhao@163.com");//设置邮件的发出方
simpleMailMessage.setTo("3541434135@qq.com");//设置邮件的接收方
simpleMailMessage.setSubject("这是一封测试邮件");//设置邮件的标题
simpleMailMessage.setText("这是邮件的内容");//设置邮件的内容
//3.使用工具将邮件对象发出
javaMailSender.send(simpleMailMessage);
}
}
3.4 发送复杂内容的邮件
测试类
/**
* 发送复杂内容的邮件
*/
@Test
public void test2() throws MessagingException {
//1.创建邮件对象
MimeMessage mimeMailMessage = javaMailSender.createMimeMessage();
//2.创建邮件的工具来设置邮件的相关属性
/*
源码:
public MimeMessageHelper(MimeMessage mimeMessage, boolean multipart, @Nullable String encoding)
throws MessagingException {
this(mimeMessage, (multipart ? MULTIPART_MODE_MIXED_RELATED : MULTIPART_MODE_NO), encoding);
}
参数分析new MimeMessageHelper(mimeMailMessage, true, "utf-8");
第一个参数MimeMessage mimeMessage是邮件对象MimeMessage
第二个参数boolean multipart是文件是否有多个部分(文本内容、图片等)
第三个参数@Nullable String encoding是编码格式,指定了不能为空,必须要设置它。
*/
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true, "utf-8");
//3.使用该工具 设置发送的邮件的相关属性
mimeMessageHelper.setFrom("fbihackerharryhao@163.com");
mimeMessageHelper.setTo("3541434135@qq.com");
mimeMessageHelper.setSubject("这是一封测试用户的复杂文件");
mimeMessageHelper.setText("<h1>这是复杂邮件的文本内容</h1>");
/*
源码
public void addInline(String contentId, File file) throws MessagingException {
Assert.notNull(file, "File must not be null");
FileDataSource dataSource = new FileDataSource(file);
dataSource.setFileTypeMap(getFileTypeMap());
addInline(contentId, dataSource);
}
*/
//在邮件内容中嵌入指定的图片
mimeMessageHelper.addInline("picture",new File("D:\\operation\\hacker.jpg"));
//为邮件添加附件
/* 源码:
public void addAttachment(String attachmentFilename, File file) throws MessagingException {
第一个参数 String attachmentFilename附件的名称
第二个参数 File file 附件具体的文件
*/
mimeMessageHelper.addAttachment("附件.txt",new File("D:\\operation\\attachment.txt"));
//4.将邮件发出
javaMailSender.send(mimeMailMessage);
}