# Spring Boot 實戰系列 - 發送郵件

使用 spring boot 快速開發發送郵件功能

準備工作

  • pom.xml 文件依賴如下
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
    </dependency>
    <!-- 郵件依賴 start -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    <!-- 郵件依賴 end -->
</dependencies>
  • application.properties 配置文件如下
spring.application.name=spring-boot-mail

# Spring Boot 整合Mail配置
spring.mail.host=smtp.qq.com
[email protected]
# qq郵箱授權碼
spring.mail.password=xxxxxx
spring.mail.default-encoding=UTF-8

# 郵件發送相關配置
[email protected]
[email protected]
  • MailService 代碼如下
@Slf4j
@Service
public class MailService {

    @Autowired
    private JavaMailSender javaMailSender;

    @Value("${mail.address.from}")
    private String from;

    public void sendSimpleMail(String[] to, String subject, String text) {
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setSubject(subject);
        simpleMailMessage.setText(text);
        simpleMailMessage.setSentDate(new Date());
        simpleMailMessage.setTo(to);
        simpleMailMessage.setFrom(from);
        log.info("發送普通郵件,參數:{}", JSON.toJSONString(simpleMailMessage));
        javaMailSender.send(simpleMailMessage);
    }
}
  • Application 啓動類代碼如下
@SpringBootApplication
public class Application {

    public static void main(String[] args) {

        // 啓動
        SpringApplication.run(Application.class, args);
    }

}
  • MailServiceTest 測試類代碼如下
@RunWith(SpringRunner.class)
@SpringBootTest
public class MailServiceTest {

    @Autowired
    private MailService mailService;

    @Value("${mail.address.to}")
    private String to;

    @Test
    public void testSendSimpleMail() {

        String[] tos = to.split(",");
        mailService.sendSimpleMail(tos, "主題-測試", "內容-測試");
    }
}

說明

  • 配置中 spring.mail.password 爲授權碼,本示例使用QQ郵箱,需要自行去申請授權碼
  • 只要依賴 spring-boot-starter-mail ,可以直接使用 JavaMailSender 實例(因爲 Spring Boot 自動配置)

本文完。

發佈了35 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章