재유's

[Error : Spring] 구글 메일 전송 인증 에러 (계정 2차 인증) 본문

IT Story/ : : Error

[Error : Spring] 구글 메일 전송 인증 에러 (계정 2차 인증)

Stella_NY 2019. 4. 15. 11:49



JAVA에서 구글서버를 통해 메일 인증 하는 도중에 500에러가 떳다.

원인은 AuthenticationFailedException 에러 username과 password가 인증되지 않았다길래 뭐지 하고 봤더니 아이디가 틀렸었다. 

그래서 고치고 다시 했는데 그래도 똑같은 에러가 뜬당 ㅜㅜ


그래서 뭐지 했는데 앞에서 계정보안 2단계 인증때문에 그렇다고 한다.

그래서 2단계 인증 풀고 나니 이메일이 보내졌당!


root-context.xml 에서 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="smtp.gmail.com" />
        <property name="port" value="465" />
        <property name="username" value="메일주소" />
        <property name="password" value="2차 인증비밀번호" />
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.starttls.enable">true</prop>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.smtp.debug">true</prop>
                <prop key="mail.smtp.socketFactory.port">465</prop>
                <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
                <prop key="mail.smtp.socketFactory.fallback">false</prop>
            </props>
        </property>
    </bean>




근데 프로젝트에서 도메인을 갖게될경우 2단계 인증을 꼭 거쳐야 된다

그래서 고민하던중 또 위의 문제를 해결해준 고마운 분이 또 해결방안을 알려주셨다 ㅎㅎ


아래와 같이 코딩을 한다면 2차 인증을 한 상태로 이메일이 전송이 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="port" value="465" />
        <property name="username" value="메일주소" />
        <property name="password" value="2차 인증비밀번호" />
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.host">smtp.gmail.com</prop>
                <prop key="mail.smtp.starttls.enable">true</prop>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.smtp.debug">true</prop>
                <prop key="mail.smtp.socketFactory.port">465</prop>
                <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
                <prop key="mail.smtp.socketFactory.fallback">false</prop>
            </props>
        </property>
    </bean>



첫번째 와 두번째의 차이점은

smtp.gmail.com을 javaMailProperties로 빼준것이다.

즉, 첫번째 코드의 line2 를 두번째 코드의 line8으로 빼준 것이다.




보여진 ERROR





Comments