打开idea,创建一个project
打开文件目录下的pom.xml文件,添加下面的内容安装依赖,等待下载完成
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
打开src->main->resources->application.properties配置文件
添加邮箱账号、密码(这里使用的是qq邮箱的授权码)
spring.application.name=my-email-app
spring.mail.host=smtp.qq.com //指定邮箱的SMTP服务器地址
spring.mail.port=587 //SMTP服务端口号
#邮箱账号
spring.mail.properties.mail.smtp.auth=true //启用SMTP身份验证(必须为true才能发送邮件)
spring.mail.properties.mail.smtp.starttls.enable=true //启用STARTTLS加密(确保邮件传输安全)
spring.mail.username=25xxxxxxx@qq.com //发件人邮箱
spring.mail.password=klptaxfztbtxxxx //邮箱授权码
spring.mail.default-encoding=utf-8 //防止中文乱码
授权码在登录qq邮箱点击设置->账号->开启服务
在src->main->项目文件里面添加一个service包
添加一个SendMail.java文件
package com.qst.springbootjava4.service;
import jakarta.mail.MessagingException; // 添加这行
import jakarta.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
// 其他已有导入...
import java.io.File;
@ComponentScan
@Service
public class SendMail {
@Autowired
private JavaMailSenderImpl mailSender;
@Value("${spring.mail.username}")
private String from;
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);
//发送邮件
mailSender.send(message);
try{
mailSender.send(message);
System.out.print("成功");
}catch (MailException e){
System.out.print("失败");
}
}
//复杂的邮件发送
public void sendCompexEmail(String to,String subject,String text,String filePath){
//定制复杂邮件信息对象MimeMessage
MimeMessage message= mailSender.createMimeMessage();
//使用MimeMessageHelper帮助类,并设置multipart多部件使用为true
try {
MimeMessageHelper helper=new MimeMessageHelper(message,true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(text);
//设置邮件附件
FileSystemResource file=new FileSystemResource(new File(filePath));
String fileName=filePath.substring(filePath.lastIndexOf(File.separator));
//发送邮件
helper.addAttachment(fileName,file);
mailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
打开text文件添加
package com.qst.springbootjava4;
import com.qst.springbootjava4.service.SendMail;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Springbootjava4ApplicationTests {
@Autowired
private SendMail sendMail; //自动注入邮件服务
@Test
public void testSendEmail() {
String to = "251xxxxxxx5@qq.com"; //收件人邮件
String subject = "验证邮件"; //邮件主题
String text = "这是一封测试邮件,用于验证Spring Boot邮件发送功能。"; //邮件正文
sendMail.sendSimpleEmail(to, subject, text);
}
@Test
public void test02(){
String to = "251xxxxxxx@qq.com"; //收件人
String subject = "测试"; //主题
String text="这是一个文件"; //正文
String filePath="C:\\Users\\Administrator\\Desktop\\新建 DOC 文档.doc"; //附件路径
sendMail.sendCompexEmail(to,subject,text,filePath);
}
}
运行代码后看邮箱