springboot集成Mail郵件,發送郵件

1、前言

      企業中,需要我們對一些數據進行監控,或者將數據導出發給指定的人。簡單的通知採用的短信的形式,但是複雜的數據導出給其他人,就會採用郵件的方式。並且這樣成本比較低。Spring框架本身提供了Mail的支持,當然目前流行的springboot框架對郵件的支持更加友好。下面以springboot集成Mail爲例。

2、引入依賴

<!-- 郵件 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
    <scope>provided</scope>
</dependency>

3、yml配置

spring:
  # 郵件配置    
  mail:
    host: smtp.163.com
    port: 25
    username: [email protected]
    #郵箱的授權碼
    password: 自己申請
    protocol: smtp          #可以不用設置,默認smtp
    default-encoding: UTF-8 #可以不用設置,默認UTF-8
    properties:
      mail:
        socketFactory:
          class: javax.net.ssl.SSLSocketFactory  #https協議認證需要配置
        smtp:
          #登錄服務器是否需要認證
          auth: true
          # 是對純文本通信協議的擴展。它提供一種方式將純文本連接升級爲加密連接(TLS或SSL),而不是另外使用一個端口作加密通信。
          starttls:
            enable: true
            required: true

其中protocol和default-encoding可以不配置,因爲默認就是smtp和UTF-8,如圖:

4、demo

public class ToolController{
	
	@Autowired
	JavaMailSenderImpl mailSender;

	public void test03() {
	    SimpleMailMessage message = new SimpleMailMessage();
            // 該參數需要設置的與yml中配置的yml一致,否則會報錯
	    message.setFrom("[email protected]");
            // 發送到的人,可以直接指定數組,發送多人
	    message.setTo("[email protected]");
            // 郵件主題
	    message.setSubject("springboot集成Mail");
            // 郵件內容
	    message.setText("測試內容!");
            // 發送郵件
	    mailSender.send(message);
	    System.out.println("信息發送成功!");
	}
}

5、工具類

很多時候我們都是把發送郵件作爲一個工具類,不需要注入任何Bean,可以做成以下配置:

@Test
public void test03() {
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
    mailSender.setHost("smtp.autostreets.com");
    mailSender.setProtocol("smtp");
    mailSender.setPort(25);
    mailSender.setUsername("[email protected]");
    mailSender.setPassword("****");
		
    Properties properties = new Properties();
    properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    properties.setProperty("mail.smtp.auth", "true");
    properties.setProperty("mail.smtp.starttls.enable", "true");
    properties.setProperty("mail.smtp.starttls.required", "true");
    mailSender.setJavaMailProperties(properties);
		
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom("[email protected]");
    //String[] toArray = {"[email protected]","[email protected]", "[email protected]","[email protected]"};
    //message.setTo(toArray);
    message.setTo("[email protected]");
    message.setSubject("Springboot集成Mail");
    message.setText("郵件內容測試");
    mailSender.send(message);
    System.out.println("信息發送成功!");
		
}

方法中有很多常量,封裝是可以抽成常量。

6、附件或者模板發送

簡單信息的發送是使用 SimpleMailMessage 爲載體,附件則需要 MimeMessage 和 MimeMessageHelper這兩個類來作爲載體。

MimeMessageHelper 用於創建MIME消息的幫助類。它爲HTML佈局中的圖像,典型郵件附件和文本內容提供支持。

發送html模板:

MimeMessage message =mailSender.createMimeMessage();
// 注意構造參數爲一個值
MimeMessageHelper helper = new MimeMessageHelper(message);
helper.setFrom("[email protected]");
helper.setTo("[email protected]");
helper.setSubject("發送HTML");
// 第二個參數爲支持html
helper.setText(html, true);
mailSender.send(message);
System.out.println("信息發送成功!");

源代碼:

 發送附件:

MimeMessage message =mailSender.createMimeMessage();
// 第二個參數表示是否添加附件
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setFrom("[email protected]");
helper.setTo("[email protected]");
helper.setSubject("發送附件");
helper.setText("測試附件");
File file = new File("E:\\Sample Pictures\\美圖1.jpg");
// 添加附件
helper.addAttachment("圖片", file);
mailSender.send(message);
System.out.println("信息發送成功!");

參數說明:

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