Springboot發送郵件(集成JavaMailSender MimeMessage)

1.在Spring Boot的工程中的pom.xml中引入spring-boot-starter-mail依賴:
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
2.以QQ郵箱爲例,在application.yml中加入如下配置(注意替換自己的用戶名和密碼):
spring:
  #郵件配置
  mail:
    # 設置郵箱主機
    host: smtp.qq.com
    # 開啓郵箱POP3/SMTP服務,獲取客戶端授權碼(注意並不是郵箱密碼,而是授權碼)
    password: uriarqfegqchgcge
    # 郵箱的用戶名
    username: [email protected]
    properties:
      mail:
        smtp:
          # 設置是否需要認證,如果爲true,那麼用戶名和密碼就必須的。如果設置false,可以不設置用戶名和密碼,當然也得看你的對接的平臺是否支持無密碼進行訪問的。
          auth: true
          starttls:
            # STARTTLS[1]  是對純文本通信協議的擴展。它提供一種方式將純文本連接升級爲加密連接(TLS或SSL),而不是另外使用一個端口作加密通信。
            enable: true
            require: true
3.下面是發送郵件的單元測試用例:
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.test.context.junit4.SpringRunner;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;

@Slf4j
@SpringBootTest
@RunWith(SpringRunner.class)
public class SendExMailTest {

    @Autowired
    private JavaMailSender mailSender;

    @Test
    public void testSend() {
        MimeMessage message = mailSender.createMimeMessage();
        // true代表是multipart類型
        log.info("開始發送郵件");
        MimeMessageHelper helper;
        try {
            helper = new MimeMessageHelper(message, true);
            //發送者
            helper.setFrom("[email protected]");
            //接收者
            helper.setTo("[email protected]");
            //郵件主題
            helper.setSubject("test報告");
            //郵件內容
            helper.setText("test", true);

            //帶有附件
            FileSystemResource file1 = new FileSystemResource(new File("C:/Users/Administrator/Desktop/eee.png"));
            helper.addAttachment("ees.png",file1);
            FileSystemResource file2 = new FileSystemResource(new File("C:/Users/Administrator/Desktop/test.jpg"));
            helper.addAttachment("test.jpg",file2);

            //嵌入圖片
            //郵件內容,第二個參數指定發送的是HTML格式
            //說明:嵌入圖片<img src='cid:head'/>,其中cid:是固定的寫法,而aaa是一個contentId。
            helper.setText("<body>這是圖片:<img src='cid:aaa' /></body>", true);
            FileSystemResource file3 = new FileSystemResource(new File("C:/Users/Administrator/Desktop/test.jpg"));
            helper.addInline("aaa",file3);

            mailSender.send(message);
            log.info("郵件發送成功");
        } catch (MessagingException e) {
            e.printStackTrace();
        }

    }
}

參考鏈接:https://412887952-qq-com.iteye.com/blog/2305992

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章