springboot2集成mail
mail授权开启
以qq邮箱为例
获取
点击设置
跳转页面后,点击账户,将页面往下拖动
验证成功过后,即可获取授权码
springboot2集成mail案例
步骤1
创建maven项目
步骤2
pom.xml
<?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>cn.spring.boot2</groupId>
<artifactId>springboot2-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>springboot2-mail</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot2-mail</name>
<description>springboot2-mail</description>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
<finalName>springboot-mail</finalName>
</build>
</project>
步骤3
application.yaml
server:
port: 8082
spring:
http:
encoding:
charset: utf-8
enabled: true
mail:
default-encoding: UTF-8
username: jkwy_4@163.com
password: 'DXTEHDLKPAUFUHKA'
host: smtp.163.com
test-connection: false
properties:
mail:
protocol: smtp
smtp:
auth: true
ssl:
enable: true
说明
spring:
mail:
host: smtp.qq.com #发送邮件的服务器,笔者这里使用的 QQ 邮件
username: 你的邮箱地址
password: 授权码,或邮箱密码
#properties根据各第三邮箱要求配置
properties.mail.smtp.auth: true
properties.mail.smtp.starttls.enable: true
default-encoding: utf-8
步骤3
/**
* @Descripton:
* @Version:
**/
@Configuration
public class MailConfig {
@Bean
public MailSenderValidatorAutoConfiguration mailSenderValidatorAutoConfiguration(@Autowired JavaMailSenderImpl javaMailSender){
return new MailSenderValidatorAutoConfiguration(javaMailSender);
}
@Slf4j
@Service
public class SendMailService {
// @Resource
// private JavaMailSenderImpl javaMailSenderImpl;
@Autowired
private JavaMailSenderImpl mailSender;
// public void sendSimpleMail() {
// SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
// // 设置邮件主题
// simpleMailMessage.setSubject("账号激活");
// // 设置要发送的邮件内容
// simpleMailMessage.setText("hello!");
// // 要发送的目标邮箱
// simpleMailMessage.setTo("353340508@qq.com");
// // 发送者邮箱和配置文件中的邮箱一致
// simpleMailMessage.setFrom("qq197720042022@163.com");
// javaMailSenderImpl.send(simpleMailMessage);
// }
//
// public void sendMimeMail() {
// MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage();
// try {
// // 开启文件上传
// MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
// // 设置文件主题
// mimeMessageHelper.setSubject("账号激活");
// // 设置文件内容 第二个参数设置是否支持html
// mimeMessageHelper.setText("<b style='color:red'>账号激活,请点击我</b>", true);
// // 设置发送到的邮箱
// mimeMessageHelper.setTo("353340508@qq.com");
// // 发送者邮箱和配置文件中的邮箱一致
// mimeMessageHelper.setFrom("qq197720042022@163.com");
// // 上传附件
// // mimeMessageHelper.addAttachment("", new File(""));
// } catch (MessagingException e) {
// e.printStackTrace();
// }
// javaMailSenderImpl.send(mimeMessage);
// }
/**
* 发送简单文本的邮件
* @param to
* @param subject
* @param content
* @return
*/
public boolean send(String to, String subject, String content) {
log.info("## Ready to send mail ...");
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
// 邮件发送来源
simpleMailMessage.setFrom(mailSender.getUsername());
// 邮件发送目标
simpleMailMessage.setTo(to);
// 设置标题
simpleMailMessage.setSubject(subject);
// 设置内容
simpleMailMessage.setText(content);
try {
// 发送
mailSender.send(simpleMailMessage);
log.info("## Send the mail success ...");
} catch (Exception e) {
log.error("Send mail error: ", e);
return false;
}
return true;
}
/**
* 发送 html 的邮件
* @param to
* @param subject
* @param html
* @return
*/
public boolean sendWithHtml(String to, String subject, String html) {
log.info("## Ready to send mail ...");
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = null;
try {
mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
// 邮件发送来源
mimeMessageHelper.setFrom(mailSender.getUsername());
// 邮件发送目标
mimeMessageHelper.setTo(to);
// 设置标题
mimeMessageHelper.setSubject(subject);
// 设置内容,并设置内容 html 格式为 true
mimeMessageHelper.setText(html, true);
mailSender.send(mimeMessage);
log.info("## Send the mail with html success ...");
} catch (Exception e) {
e.printStackTrace();
log.error("Send html mail error: ", e);
return false;
}
return true;
}
/**
* 发送带有图片的 html 的邮件
* @param to
* @param subject
* @param html
* @param cids
* @param filePaths
* @return
*/
public boolean sendWithImageHtml(String to, String subject, String html, String[] cids, String[] filePaths) {
log.info("## Ready to send mail ...");
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = null;
try {
mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
// 邮件发送来源
mimeMessageHelper.setFrom(mailSender.getUsername());
// 邮件发送目标
mimeMessageHelper.setTo(to);
// 设置标题
mimeMessageHelper.setSubject(subject);
// 设置内容,并设置内容 html 格式为 true
mimeMessageHelper.setText(html, true);
// 设置 html 中内联的图片
for (int i = 0; i < cids.length; i++) {
FileSystemResource file = new FileSystemResource(filePaths[i]);
// addInline() 方法 cid 需要 html 中的 cid (Content ID) 对应,才能设置图片成功,
// 具体可以参见,下面 4.3.3 单元测试的参数设置
mimeMessageHelper.addInline(cids[i], file);
}
mailSender.send(mimeMessage);
log.info("## Send the mail with image success ...");
} catch (Exception e) {
e.printStackTrace();
log.error("Send html mail error: ", e);
return false;
}
return true;
}
/**
* 发送带有附件的邮件
* @param to
* @param subject
* @param content
* @param filePaths
* @return
*/
public boolean sendWithWithEnclosure(String to, String subject, String content, String[] filePaths) {
log.info("## Ready to send mail ...");
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = null;
try {
mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
// 邮件发送来源
mimeMessageHelper.setFrom(mailSender.getUsername());
// 邮件发送目标
mimeMessageHelper.setTo(to);
// 设置标题
mimeMessageHelper.setSubject(subject);
// 设置内容
mimeMessageHelper.setText(content);
// 添加附件
for (int i = 0; i < filePaths.length; i++) {
FileSystemResource file = new FileSystemResource(filePaths[i]);
String attachementFileName = "附件" + (i + 1);
mimeMessageHelper.addAttachment(attachementFileName, file);
}
mailSender.send(mimeMessage);
log.info("## Send the mail with enclosure success ...");
} catch (Exception e) {
log.error("Send html mail error: ", e);
return false;
}
return true;
}
}
@SpringBootApplication
public class Springboot2MailApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot2MailApplication.class, args);
}
}
步骤5
测试
@SpringBootTest
class Springboot2MailApplicationTests {
@Autowired
private SendMailService sendMailService;
@Test
void contextLoads() {
System.out.println("=========mail send start==========");
sendMailService.send("spring1@spring1.cn","测试","邮箱测试接口");
System.out.println("=========mail send end==========");
}
}