在Spring Boot中使用YAML文件配置SMTP主机

Ele*_*scu 1 java smtp spring-boot

我正在尝试为我的Spring Boot应用程序配置SMTP主机。

我的application-dev.yml文件中包含以下代码:

 mail:
    host: smtp.gmail.com
    port: 465
    username: myemail@gmail.com
    password: mypassword
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试发送电子邮件时,出现此异常:

Caused by: javax.mail.MessagingException: Could not connect to 
SMTP host: smtp.gmail.com, 
port: 465, response: -1
Run Code Online (Sandbox Code Playgroud)

另外,我已经使用JHipster生成了此代码,并且不确定是否应该修改其他内容还是足以配置SMTP主机。

将端口更改为587后,我得到了:

org.springframework.mail.MailSendException: 
Failed messages:    com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue 
a STARTTLS command first. jm6sm60863600wjb.27 - gsmtp
Run Code Online (Sandbox Code Playgroud)

Ele*_*scu 6

我进行了以下更改,现在可以正常使用:

 mail:
    host: smtp.gmail.com
    port: 587
    username: mymail@gmail.com
    password: mypassword
    protocol: smtp
    tls: true
    properties.mail.smtp:
        auth: true
        starttls.enable: true
        ssl.trust: smtp.gmail.com
Run Code Online (Sandbox Code Playgroud)


Amo*_*shi 5

我使用以下 YAML 配置通过 Gmail 发送邮件

spring:
  mail:
    default-encoding: UTF-8
    host: smtp.gmail.com
    username: <Gmail username>
    password: <Gmail password>
    port: 587
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
    protocol: smtp
    test-connection: false
Run Code Online (Sandbox Code Playgroud)


ndr*_*one 1

我相信你把端口弄错了。我相信这是587

更新

现在我们需要设置 StartTLS

添加

mail:
  host: smtp.gmail.com
  port: 587
  username: myemail@gmail.com
  password: mypassword
  properties:
    starttls.enable: true
Run Code Online (Sandbox Code Playgroud)