一、在springboot的配置文件中添加如下几个配置
spring:
mail:
host: smtp.qq.com #发送邮件服务器
username: xxxx@qq.com #发送邮件的邮箱地址
password: xxxxx #客户端授权吗(文章最后呢有详细的授权码获取方法)
# 其它参数
properties:
mail:
smtp:
# 如果是用 SSL 方式,需要配置如下属性,使用qq邮箱的话需要开启
ssl:
enable: true
required: true
# 邮件接收时间的限制,单位毫秒
timeout: 3000
# 连接时间的限制,单位毫秒
connectiontimeout: 3000
# 邮件发送时间的限制,单位毫秒
writetimeout: 3000
二、创建一个收发邮箱的工具类MailService.java
我是将它直接放在service这个文件夹下面的
package cn.luocome.daka.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Map;
/**
* @author 微风
* @version 1.0
* @date 2021/1/31 22:37
*/
@Service
public class MailService {
@Autowired
private JavaMailSender mailSender;
private static final String SENDER = "xxxx@qq.com"; //这里是你的邮箱,要和yml配置文件中的邮箱保持一致
/**
* 发送普通邮件
*
* @param to 收件人
* @param subject 主题
* @param content 内容
*/
public void sendSimpleMailMessge(String to, String subject, String content) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(SENDER);
message.setTo(to);
message.setSubject(subject);
message.setText(content);
try {
mailSender.send(message);
} catch (Exception e) {
// logger.error("发送简单邮件时发生异常!", e);
}
}
public void sendMimeMessge(String to, String subject, String content, String filePath) {
MimeMessage message = mailSender.createMimeMessage();
try {
//true表示需要创建一个multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(SENDER);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
FileSystemResource file = new FileSystemResource(new File(filePath));
String fileName = file.getFilename();
helper.addAttachment(fileName, file);
mailSender.send(message);
} catch (MessagingException e) {
// logger.error("发送带附件的MimeMessge时发生异常!", e);
}
}
/**
* 发送带静态文件的邮件
*
* @param to 收件人
* @param subject 主题
* @param content 内容
* @param rscIdMap 需要替换的静态文件
*/
public void sendMimeMessge(String to, String subject, String content, Map<String, String> rscIdMap) {
MimeMessage message = mailSender.createMimeMessage();
try {
//true表示需要创建一个multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(SENDER);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
for (Map.Entry<String, String> entry : rscIdMap.entrySet()) {
FileSystemResource file = new FileSystemResource(new File(entry.getValue()));
helper.addInline(entry.getKey(), file);
}
mailSender.send(message);
} catch (MessagingException e) {
// logger.error("发送带静态文件的MimeMessge时发生异常!", e);
}
}
}
三、我们可以在springboot的单元测试中测试一下,也可直接在controller中使用。这里我在单元测试中测试
首先在Test文件夹下创建一个单元测试文件 SendemailApplicationTests.java
package cn.luocome.daka.test;
import cn.luocome.daka.service.MailService;
import org.junit.Test;
import org.junit.runner.RunWith;
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.test.context.junit4.SpringRunner;
/**
* @author 微风
* @version 1.0
* @date 2021/1/31 22:24
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class SendemailApplicationTests {
@Autowired
private MailService mailService;
private static final String TO = "xxxxxxxx@qq.com";
private static final String SUBJECT = "测试邮件";
private static final String CONTENT = "test content";
/**
* 测试发送普通邮件
*/
@Test
public void sendSimpleMailMessage() {
mailService.sendSimpleMailMessge(TO, SUBJECT, CONTENT);
}
}
如下图所示,点击单元测试后没有报错,则表明邮件发送成功,如下图所示