Spring Boot 發送郵件

1.發送郵件以前的準備

申請一個郵箱帳號 ,我這裏使用的是網易郵箱
修改網易郵箱的設置 進去以後默認是關閉的須要開啓他 POP3/SMTP服務 開啓的時候有一個受權碼,記錄好他,下面要用到
微信截圖_20200721225937.png
有的郵箱設置可能須要保存,記得保存修改

2. 代碼的編寫

在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

3. 測試郵件發送功能

新建一個測試類
@Autowired
    private MailClient mailClient; //將剛纔寫好的郵件發送的客戶端注入進來

@Test  //測試發送一個普通文本的郵件
    public void sendMailText(){
        mailClient.sendMail("你要發送郵件的郵箱","測試","我在測試啊");
    }

微信截圖_20200721231516.png
是否是很神奇,收到了郵件了,那麼接下來咱們來試試發送一個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的包
在檢查一下有沒有收到郵件
1595345117(1).jpg
收到郵件了
好了,如今spring boot 發送郵件功能已經完成了,快去發郵件把!spring

相關文章
相關標籤/搜索