Spring Boot邮件发送(powernode document)(内含源代码)
源代码下载链接地址:
https://download.csdn.net/download/weixin_46411355/87452780
目录
- Spring Boot邮件发送(powernode document)(内含源代码)
- `源代码下载链接地址:`[https://download.csdn.net/download/weixin_46411355/87452780](https://download.csdn.net/download/weixin_46411355/87452780)
- 1.概述
- 2.最佳实践
- 2.1创建项目引入依赖(mail)
- 2.2修改yml配置文件
- 2.3编写测试发送邮件
- 2.4 测试结果
- 2.4.1 发送基本内容
- 2.4.2 发送复杂内容
我们使用java程序发送邮件
,属于使用第三方客户端发送邮件
使用第三方客户端发送邮件也需要先通过认证(登录)
:
官方客户端认证: 用户名 密码
第三方客户端的认证:用户名 授权码
授权码需要通过发送短信开通指定功能时获取
1.概述
SpringBoot实现邮件功能是非常的方便快捷的,因为SpringBoot默认有starter实现了Mail。
发送邮件应该是网站的必备功能之一,什么注册验证,忘记密码或者是给用户发送营销信息。
最早期的时候我们会使用JavaMail相关api来写发送邮件的相关代码,后来spring推出了JavaMailSender
更加简化了邮件发送的过程,在之后springboot对此进行了封装就有了现在的spring-boot-starter-mail
。
2.最佳实践
先去qq邮箱设置smtp开启,并获得授权码
邮箱->设置->账户->POP3/SMTP服务:开启服务后会获得授权码
2.1创建项目引入依赖(mail)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.2修改yml配置文件
spring:
mail:
host: smtp.qq.com #配置服务器qq:smtp.qq.com,网易163:smtp.163.com
password: pmarixfxjplhcjhh #授权码,邮箱->设置->账户->POP3/SMTP服务:开启服务后会获得权码
username: 3541434135@qq.com
default-encoding: UTF-8
2.3编写测试发送邮件
package com.bjpowernode.springbootmailsendingdocument;
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;
import org.springframework.mail.javamail.MimeMailMessage;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
@SpringBootTest
class SpringbootMailsendingDocumentApplicationTests {
@Autowired
private JavaMailSender javaMailSender;
@Test
void contextLoads() {
System.out.println("javaMailSender = " + javaMailSender);
}
/**
* 发送基本内容
*/
@Test
void testSendSimpleMailMessage(){
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
//发件人邮箱
simpleMailMessage.setFrom("3541434135@qq.com");
//收件人邮箱
simpleMailMessage.setTo("601081254@qq.com");
//邮件主题
simpleMailMessage.setSubject("这是一个测试邮件");
//邮件内容
simpleMailMessage.setText("测试内容");
javaMailSender.send(simpleMailMessage);
}
/**
* 测试发送复杂内容
*/
@Test
void testSendMimeMessage() throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
//创建一个邮件工具,可以发送邮件
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true,"utf-8");
mimeMessageHelper.setFrom("3541434135@qq.com");
mimeMessageHelper.setTo("601081254@qq.com");
mimeMessage.setSubject("这是一个携带了图片和附件的邮件");
//拼接内容参数
StringBuilder sb = new StringBuilder();
sb.append("<html> <body> <h1 style='color:red'>springboot 测试邮件发送复杂格式。</h1>");
sb.append("<p style='color:blue,font-size:16px'>哈哈哈</p>");
sb.append("<p style='text-align:center'>居中</p>");
sb.append("<img src='cid:picture'/> </body></html>"); //如果要插入图片src='cid:picture'
//设置内容,可以被html解析
mimeMessageHelper.setText(sb.toString(),true);
//从本地磁盘中读取到图片 站位到内容中去
mimeMessageHelper.addInline("picture",new File("D:\\operation\\hacker.jpg"));
//添加附件
mimeMessageHelper.addAttachment("测试文件.txt",new File("D:\\operation\\attachment.txt"));
javaMailSender.send(mimeMessage);
}
}
2.4 测试结果
2.4.1 发送基本内容
2.4.2 发送复杂内容
运行结果