申請一個郵箱帳號 ,我這裏使用的是網易郵箱
修改網易郵箱的設置 進去以後默認是關閉的須要開啓他POP3/SMTP服務
開啓的時候有一個受權碼,記錄好他,下面要用到
有的郵箱設置可能須要保存,記得保存修改
在pom.xml中引入依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> <version>2.3.1.RELEASE</version> </dependency>
編寫application.yml文件
spring: mail: host: smtp.163.com # 你使用的郵箱的域名 port: 465 # 郵箱的端口通常都是465 不知道能夠查一下 username: XXXX@163.com # 你的郵箱帳號 password: XXXXX # 上面開啓的時候保存的受權碼 protocol: smtp # 發送郵件的協議 properties.mail.smtp.ssl.enable: true #開啓SSL安全鏈接
發送郵件的客戶端類
@Component //這個類會別spring託管,在這個項目中全部地方均可以使用,只須要注入一下便可 public class MailClient { private static final Logger logger = LoggerFactory.getLogger(MailClient.class); /** * 發送郵件的核心組件 */ @Autowired private JavaMailSender mailSender; /** * 郵件發件人 */ @Value("${spring.mail.username}") //這裏是從application.yml中取得值springboot 中可使用@Value 來獲取到yml文件中的值 spring.mail.username 就是他的key private String from; /** 發送郵件的方法 * @param to 發送給誰 * @param subject 郵件主題 * @param content 郵件內容 */ public void sendMail(String to,String subject,String content){ try { //建立一個發送郵件的類 MimeMessage message = mailSender.createMimeMessage(); //使用發送郵件的幫助類 MimeMessageHelper helper = new MimeMessageHelper(message); //發送人 helper.setFrom(from); //接收人 helper.setTo(to); //發送的主題 helper.setSubject(subject); //以html的形式的郵件內容 helper.setText(content,true); //發送郵件 mailSender.send(helper.getMimeMessage()); } catch (MessagingException e) { logger.error("發送郵件失敗"+e.getMessage()); } } }
好了如今發送郵件的功能已經寫完了,如今測試一下吧html
新建一個測試類
@Autowired private MailClient mailClient; //將剛纔寫好的郵件發送的客戶端注入進來 @Test //測試發送一個普通文本的郵件 public void sendMailText(){ mailClient.sendMail("你要發送郵件的郵箱","測試","我在測試啊"); }
是否是很神奇,收到了郵件了,那麼接下來咱們來試試發送一個html的郵件看看java
在templates新建一個mail 文件夾,建一個名爲demo.html的文件
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>郵件發送例子</title> </head> <body> <p>歡迎 <span style="color: red" th:text="${username}"></span>使用個人郵箱!</p> </body> </html>
回到咱們的測試類
import org.thymeleaf.TemplateEngine; import org.thymeleaf.context.Context; @Autowired private MailClient mailClient; //模板引擎 這是springboot 已經將thymeleaf封裝成了一個對象,能夠直接使用他``` @Autowired private TemplateEngine templateEngine; @Test public void sendHTMLMail(){ Context context = new Context(); //在這裏咱們是將html要獲取的username傳進去 context.setVariable("username","小王"); String content = templateEngine.process("/mail/demo", context);//指定他的html路徑,而且將咱們設置的一個信息給他 System.out.println(content); //在控制檯打印一下看看 mailClient.sendMail("你要發送的郵箱","HTML發送",content); //執行發送郵件的方法 }
在這裏必定要注意不要導錯包了,咱們用的是thymeleaf
的,因此要到thymeleaf
的包
在檢查一下有沒有收到郵件
收到郵件了
好了,如今spring boot 發送郵件功能已經完成了,快去發郵件把!spring