很多次我在本地寫好了發送郵件的服務之后,部署到阿里雲的服務器,就歇菜了。Google了很久,找到的別人的記錄都是差不多。有人提到了使用端口的問題。解決因端口問題而發送不了郵件。
我使用的是網易雲的郵箱,填好smtp服務器,填好基本的信息,本地一跑。誒,可以發送了。
依賴pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
</dependencies>
在application.properties中:
spring.mail.host=smtp.163.com //郵箱服務器地址
spring.mail.username=xxx@163.com //用戶名
spring.mail.password=xxyyooo //密碼
spring.mail.default-encoding=UTF-8
mail.fromMail.addr=xxx@163.com //以誰來發送郵件
這個方法具體可以參考博客:SpringBoot發送郵件
這個方法在本地是沒有問題的,但是部署在阿里雲上之后,會看到報錯,smtp端口25連接超時。。。
解決
於是,找了一下原因,發現是阿里雲的服務器不能使用25端口。
現在可以用smtp的465端口來發送郵件,網上的配置也是五花八門,找到一個配置比較全的文章:SpringBoot集成郵箱
和普通的文章只有配置文件的區別。
spring:
mail:
host: smtp.126.com
username: xx@126.com
password: xxxxxxxx
protocol: smtp
properties.mail.smtp.auth: true
properties.mail.smtp.port: 465 #465或者994
properties.mail.display.sendmail: Javen
properties.mail.display.sendname: Spring Boot Guide Email
properties.mail.smtp.starttls.enable: true
properties.mail.smtp.starttls.required: true
properties.mail.smtp.ssl.enable: true
default-encoding: utf-8
from: xx@126.com