1、导入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2、application.yml文件中进行配置:
spring:
mail:
default-encoding: utf-8
# 主机地址
host: smtp.qq.com
# 邮箱名
username: xxx@qq.com
# 授权码(不是密码):第三方发送邮件需要获取邮箱的授权码
password: xxx
3、示例代码:
@RestController
@Api("测试SpringBoot发送邮件功能")
public class Email {
@Autowired
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
private String from;
/**
* 发送纯文本邮件
* @param to 邮件接收方
* @param subject 邮件主题
* @param text 邮件内容
*/
@ApiOperation("发送简单邮件")
@GetMapping("sendSimpleMail")
private void sendSimpleMail(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 (Exception e){
System.out.println("邮件发送失败:" + e.getMessage());
}
}
/**
* 发送带附件的邮件
* @param to 邮件接收方
* @param subject 邮件主题
* @param text 邮件内容
* @param path 附件所在的文件路径
*/
@ApiOperation("发送带附件的邮件")
@GetMapping("sendAttachmentMail")
public void sendAttachmentMail(String to,String subject,String text,String path){
MimeMessage mimeMessage = mailSender.createMimeMessage();
try{
// 创建一个multipart格式的message
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true);
messageHelper.setFrom(from);
messageHelper.setTo(to);
messageHelper.setSubject(subject);
messageHelper.setText(text,true);
// 添加附件信息
FileSystemResource file = new FileSystemResource(new File(path));
String fileName = path.substring(path.lastIndexOf(File.separator));
messageHelper.addAttachment(fileName, file);
// 发送带附件的邮件
mailSender.send(mimeMessage);
System.out.println("邮件发送成功");
}catch (Exception e){
System.out.println("邮件发送失败:" + e.getMessage());
}
}
}
刚开始邮件发送后没有输出任何提示语句,所以想知道邮件是否发送成功,就去查看了qq邮箱的已发送列表,但是发了好几份邮件,都没有看到发送记录,结果一问收件人,已经收到了。
无意间点开了已发送页中的查询发信投递状态,也显示投递成功,所以得出结论:第三方发送的邮件不会显示到qq邮箱已发送列表中,但是可以通过 查询发信投递状态 来查看是否投递成功。