本人采用網上給的如下配置端口(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方法
然後檢視doSend方法
doSend中有個
transport = connectTransport();
檢視connectTransport()
可以看到 getPort()
在圖中516處打斷點dubug運作的話可以看到在transport對象中有url資訊
請求端口為465設定成功
本人萌新一枚,還在瘋狂采坑過程中,如有錯誤地方請指出。
http://www.helper12366.com 網站開發過程記錄