springboot邮件任务
1准备邮件服务器【配置QQ邮件服务器以支持发送邮件】
2.发送短信后会发送授权码
3.发送邮件
3.1发送纯文本邮件
步骤1:添加邮件服务的依赖启动器【spring-boot-starter-mail】
步骤2:添加邮件服务配置【application.properties】【请修改您的账密】
发件人邮服务器相关配置
spring.mail.host=smtp.qq.com
spring.mail.port=587
配置个人QQ账户和密码(密码是加密后的授权码)
spring.mail.username=1243xxxxx@qq.com
spring.mail.password=xxxxxx
spring.mail.default-encoding=UTF-8
邮件服务超时时间配置
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=3000
spring.mail.properties.mail.smtp.writetimeout=5000
步骤3:定制邮件发送服务
编写发送任务管理业务的处理类SendEmailService【在service层】
使用SimpleMailMessage类
@Service
public class SendEmailService {
@Autowired
private JavaMailSenderImpl mailSender;
@Value("${spring.mail.username}") //注入发件人地址【这里获取的是全局配置里的username】
private String from;
//3.1.4.纯文本邮件发送效果测试【EmailTest】
public void sendSimpleEmail(String to,String subject,String text) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject(subject); //标题
message.setText(text);
try {
mailSender.send(message);
System.out.println("纯文本邮件发送成功");
} catch (MailException e) {
System.out.println("纯文本邮件发送失败 " + e.getMessage());
e.printStackTrace();
}
}
测试:
@SpringBootTest
public class EmailTest {
@Autowired
private SendEmailService sendEmailService;
@Test
public void sendSimpleMailTest() {
String to = "1243386446@qq.com"; //发送给谁【这里我自己发给自己】
String subject = "【纯文本邮件】标题"; //标题
String text = "Spring Boot纯文本邮件发送内容测试....."; //邮件内容
sendEmailService.sendSimpleEmail(to, subject, text);
}
结果:
3.2发送带附件和图片的邮件邮件
使用MimeMessage类和MimeMessageHelper帮助类
public void sendComplexEmail(String to,String subject,String text,String
filePath,String rscId,String rscPath) {
MimeMessage message = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(text, true);
// 静态内容:放在HTML正文中的图片
FileSystemResource res = new FileSystemResource(new File(rscPath));
helper.addInline(rscId, res);
// 3.2.2.邮件发送效果测试【EmailTest】
// 邮件附件
FileSystemResource file = new FileSystemResource(new File(filePath));
String fileName =filePath.substring(filePath.lastIndexOf(File.separator));
helper.addAttachment(fileName, file);
mailSender.send(message);
System.out.println("复杂邮件发送成功");
} catch (MessagingException e) {
System.out.println("复杂邮件发送失败 " + e.getMessage());
e.printStackTrace();
}
}
测试:
@Test
public void sendComplexEmailTest() {
String to = "1243386446@qq.com"; //发送给谁【这里我自己发给自己】
String subject = "【复杂邮件】标题"; //标题
// HTML内容【邮件内容不过是带有HTML的】
StringBuilder text = new StringBuilder();
text.append("<html><head></head>");
text.append("<body><h1>祝大家元旦快乐!</h1>");
// 静态内容id:放在HTML正文中的图片的ID
String rscId = "img001";
text.append("<img src='cid:" + rscId + "'/></body>");
text.append("</html>");
// 静态内容路径:放在HTML正文中的图片的全路径
String rscPath = "F:\\作业\\Springboot\\20211214\\拜登.jpeg";
// 邮件附件
String filePath = "F:\\作业\\Springboot\\20211214\\001.pdf";
sendEmailService.sendComplexEmail(to, subject, text.toString(), filePath, rscId, rscPath);
}
结果: