前言
關於如何搭建SpringBoot工程以及開啓Web功能,
可以查看我的這篇博客:用Spring Initializr快速構建SpringBoot及整合MVC
環境準備
首先,我們需要打開QQ郵箱,進入設置,選中賬戶,開啓SMTP服務,如圖:
並生成授權碼,授權碼的作用相當於QQ郵箱的密碼。
所需依賴
在依賴管理文件pom.xml
中導入發送郵件所需要的起步依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置文件
在配置文件application.yml
中配置發送郵箱方的相關信息:
spring:
# 配置QQ郵箱
mail:
#默認發送郵件基於smtp協議 可不要
protocol: smtp
#smtp服務器地址
host: smtp.qq.com
#發送方的郵箱
username: ******@qq.com
#發送方的密碼(授權碼或者QQ郵箱密碼都可以)
password: ********
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
代碼實現
首先需要一個郵件實體類:
package com.guqueyue.entity;
/**
* @author guqueyue
* @Date 2020/5/26
**/
@Data //lombok插件的註解,若是沒有用lombok插件,請自行生成getter、setter方法
@AllArgsConstructor //全參構造方法
@NoArgsConstructor //無參構造方法
@Accessors(chain = true) //開啓鏈式編程
public class Email implements Serializable {
/**
* 接收者
*/
private String to;
/**
* 郵件標題
*/
private String subject;
/**
* 發送內容
*/
private String context;
/**
* 發送時間
*/
private Date sendTime;
}
其次在Web層新建一個Controller,代碼如下:
package com.guqueyue.controller;
/**
* @author guqueyue
* @Date 2020/5/26
* 發送郵件
**/
@Controller
@RequestMapping("/send")
public class MailController {
@Autowired
private JavaMailSender javaMailSender;
/**
* 獲取配置文件裏的發送方
*/
@Value("${spring.mail.username}")
private String from;
@RequestMapping("/mail")
public void sendMail() throws MessagingException {
// 設置郵件內容
Email email = new Email()
.setSubject("這是一封測試郵件")
.setContext("<hr/>蓋西伯(周文王)拘而演《周易》;<br/> 仲尼厄而作《春秋》;<br/>屈原放逐,乃賦《離騷》;<br/>" +
"左丘失明,厥有《國語》;<br/>孫子臏腳,《兵法》修列;<br/>" +
"不韋遷蜀,世傳《呂覽》;<br/>韓非囚秦,《說難》、《孤憤》;《詩》三百篇大抵聖賢發憤之所作也。<hr/>")
.setTo(from)
.setSendTime(new Date());
// 發送郵件
send(email);
}
/**
* 發送郵件的方法
*/
public void send(Email email) throws MessagingException {
System.out.println("接收到的郵件對象爲:" + email);
//創建一封郵件
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
//Spring提供的一個便捷的郵件設置對象
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
//設置郵件的內容
//標題
mimeMessageHelper.setSubject(email.getSubject());
//發送方
mimeMessageHelper.setFrom(from);
//接收方
mimeMessageHelper.setTo(email.getTo());//接收者
// mimeMessageHelper.setCc("***@qq.com");//抄送
// mimeMessageHelper.setBcc("***@qq.com");//密送
//設置內容
mimeMessageHelper.setText(email.getContext(), true);
//發送附件
// mimeMessageHelper.addAttachment("我的附件.jpg", new File("C:\\worker\\images\\7f25dc3b-13e5-42a5-a205-8276b0528040"));
//設置當前時間
mimeMessageHelper.setSentDate(email.getSendTime());
//發送郵件
javaMailSender.send(mimeMessage);
System.out.println("成功發送郵件......");
}
}
然後運行程序,在瀏覽器輸入http://localhost:8080/send/mail
,不必理會頁面的404錯誤,發現郵箱收到以下郵件即爲成功: