天天看點

spring-boot-email發生郵件使用465端口,并檢視端口是否是465端口

本人采用網上給的如下配置端口(spring.mail.properties.mail.smtp.socketFactory.port=465),結果部署到阿裡雲伺服器上時候請求的端口仍然是25(原因就是因為阿裡雲伺服器預設是禁止25端口的.所用隻能改用 465或者其他端口)說明配置沒有生效。才有下面配置後dubug運作本地檢視到底請求的端口是什麼,是以寫此文章記錄下自己的配置過程。做一個開發筆記省的配置不生效而來回周折。

maven配置

注:之前看的文章說spring-boot版本太低的話不支援更改端口,本人沒有鑒定,如修改不成功請自己排查是否屬于這個原因。

<dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
           

在application.properties配置檔案裡增加配置,

作者使用的是QQ企業郵箱

#基礎資訊
spring.mail.host=smtp.exmail.qq.com
spring.mail.username=發送郵箱賬号
spring.mail.password=對應密碼
#使用SMTPS協定465端口
spring.mail.port=465
spring.mail.default-encoding=UTF-8
#SSL證書Socket工廠
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
#登入伺服器是否需要認證
spring.mail.properties.mail.smtp.auth=true
           

測試代碼

import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.test.context.junit4.SpringRunner;

import hb.bk.HBBootApplication;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = { HBBootApplication.class }) // 指定啟動類
public class ApplicationTests {

    @Autowired
    private JavaMailSender mailSender; // 自動注入的Bean

    @Value("${spring.mail.username}")
    private String Sender; // 讀取配置檔案中的參數

    public void testOne() {
        System.out.println("test hello 1");
    }

    public void sendSimpleMail() throws Exception {
        SimpleMailMessage message = new SimpleMailMessage();
        System.out.println("test hello Sender" + Sender);
        message.setFrom(Sender);
        message.setTo(Sender); // 自己給自己發送郵件
        message.setSubject("主題:簡單郵件");
        message.setText("測試郵件内容");
        mailSender.send(message);
    }
}
           

檢視是端口是否修改成功進入.send方法

spring-boot-email發生郵件使用465端口,并檢視端口是否是465端口

然後檢視doSend方法

spring-boot-email發生郵件使用465端口,并檢視端口是否是465端口

doSend中有個

transport = connectTransport();

檢視connectTransport()

spring-boot-email發生郵件使用465端口,并檢視端口是否是465端口

可以看到 getPort()

在圖中516處打斷點dubug運作的話可以看到在transport對象中有url資訊

請求端口為465設定成功

spring-boot-email發生郵件使用465端口,并檢視端口是否是465端口

本人萌新一枚,還在瘋狂采坑過程中,如有錯誤地方請指出。

http://www.helper12366.com 網站開發過程記錄

繼續閱讀