복붙노트

[SPRING] Spring Boot 1.2.5.RELEASE - Gmail SMTP를 통해 전자 메일 보내기

SPRING

Spring Boot 1.2.5.RELEASE - Gmail SMTP를 통해 전자 메일 보내기

application.properties:

spring.mail.host = smtp.gmail.com
spring.mail.username = *****@gmail.com
spring.mail.password = ****
spring.mail.properties.mail.smtp.auth = true
spring.mail.properties.mail.smtp.socketFactory.port = 465
spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback = false

pc

<parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>1.2.0.RELEASE</version>
     <relativePath/>
</parent>

.......

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

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

Docs는 말합니다 : spring.mail.host 및 관련 라이브러리 (spring-boot-startter-mail에 정의 된대로)를 사용할 수있는 경우 기본 JavaMailSender가없는 경우 만들어집니다.

그래서 나는 추가했다.

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

그것은 도움이되지 않았다. 그리고 나는 그것을 대체했다.

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.5.4</version>
</dependency>

또한 나는 시도했다.

spring.mail.host = smtp.gmail.com
spring.mail.username = *****@gmail.com
spring.mail.password = ****
spring.mail.port = 465

결과는 동일합니다. @Bean을 수동으로 생성하고 설정하는 것은 문제가되지 않습니다. 하지만 저는 Spring Boot의 모든 아름다움을 사용하고 싶습니다. 내 실수를 저에게 지적하십시오.

미리 감사드립니다.

해결법

  1. ==============================

    1.Java Mail에서 회귀 / 동작 변경이있는 것 같습니다. 1.5.3과 1.5.4에서 모두 변경되었습니다. Java Mail 1.5.2를 사용하므로 Boot 1.2.0에서 작동합니다. Java Mail 1.5.4를 사용하기 때문에 Boot 1.2.5에서는 실패합니다.

    Java Mail에서 회귀 / 동작 변경이있는 것 같습니다. 1.5.3과 1.5.4에서 모두 변경되었습니다. Java Mail 1.5.2를 사용하므로 Boot 1.2.0에서 작동합니다. Java Mail 1.5.4를 사용하기 때문에 Boot 1.2.5에서는 실패합니다.

    1.5.3+의 문제는 SMTP 전송이 포트 465에서 연결되고 Gmail에서 SSL 핸드 셰이크를 예상한다는 것입니다. Java Mail은 그것이 SSL을 사용하지 않는다고 잘못 생각하여 절대로 핸드 셰이크를 시작하지 않으며 결국 연결 시도가 시간 초과됩니다. Java Mail이 SSL 사용에 대해 명시 적으로 알리도록 설득 할 수 있습니다. application.properties에 다음을 추가하십시오.

    spring.mail.properties.mail.smtp.ssl.enable = true
    
  2. ==============================

    2.그것은 회귀적인 것처럼 보입니다. 문제를 조사하기 위해 # 3624를 만들었습니다. 샘플 프로젝트에 감사드립니다!

    그것은 회귀적인 것처럼 보입니다. 문제를 조사하기 위해 # 3624를 만들었습니다. 샘플 프로젝트에 감사드립니다!

  3. from https://stackoverflow.com/questions/31721298/spring-boot-1-2-5-release-sending-e-mail-via-gmail-smtp by cc-by-sa and MIT license