티스토리 뷰

728x90
반응형

참고 - 해당 이메일 발송은 local에서 이메일 발송입니다.

 

Step 01 - Pom.xml 의존 설정

-  support 라이브러리는 메일 라이브러리 사용을 좀 더 수월하게 할 수 있도록 스프링에서 제공해주는 라이브러리이기 때문에 현재 스프링 버전과 동일하게 맞춰줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
<!-- 메일 보내기 위한  -->    
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>
        
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>${org.springframework-version}</version>
</dependency>
cs

 

Step 02 - root-context.xml에 naver 또는 gmail에 대한 설정

  • naver 이메일을 사용하기 위해서는 네이버 SMTP의 설정을 해주어야 합니다.
  • gmail을 사용하기 위해서는 보안단계를 낮추거나 또는 인증을 2단계로 강화하여 앱 비밀번호를 받아서 설정해주면 됩니다.
  • 필자는 gmail을 사용하고 보안을 강화해서 사용을 했습니다. 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
    
    <!-- naver email 설정 시작 -->
    <bean id="naverMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="smtp.naver.com" />
        <property name="port" value="465" />
        <property name="username" value="본인의 아이디" />
        <property name="password" value="본인의 비밀번호" />
        <property name="defaultEncoding" value="utf-8" />
        <property name="javaMailProperties">
            <props>
                <prop key="mail.debug">true</prop>
                <prop key="mail.smtp.starttls.enable">true</prop>
                <prop key="mail.smtps.ssl.checkserveridentity">true</prop>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.smtps.ssl.trust">*</prop>
                <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
            </props>
        </property>
    </bean>
    <!-- naver email 설정 끝 -->
    
    <!-- gmail email 설정 -->
     <bean id="gmailMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="smtp.gmail.com" />
        <property name="port" value="587" />
        <property name="username" value="본인의 아이디" />
        <property name="password" value="본인의 비밀번호" />
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.starttls.enable">true</prop>
            </props>
        </property>
    </bean>
    <!-- gmail email 설정 끝 -->
</beans>
 
cs

 

Step 03 - 네이버 메일 또는 gmail에 대한 설정 방법

Case 01 - 네이버 STMP 설정

  • 아래 보이는 사진에서의 아이디와 비밀번호를 root-context.xml에 알맞게 설정을 하면됩니다.

 

Case 02 - gmail 설정 방법

  • gmail 같은 경우 보안 단계를 낮춰서 하는 방법이 있지만 구글링을 통해서 이 방법은 위험하다는 것을 인지하고 보안을 강화하여 앱 비빌번호를 발급 받아서 하는 방법을 참고했습니다.
  • 발급 받은 앱 비밀번호를 root-context.xml에 아이디와 설정을 같이 해주었습니다.

 

아래 링크에서 gmail에서 앱 비밀번호를 발급 받는 방법을 참고 하였습니다.

https://ivvve.github.io/2019/02/09/java/Spring/mail_AuthenticationFailedException/

 

Spring Mail AuthenticationFailedException 해결하기

개인용 웹앱을 만드는데 메일 기능이 필요하여 spring-boot-starter-mail dependency를 추가하고 properties에 메일 관련 설정을 지정했는데도 자꾸 다음과 같은 AuthenticationFailedException이 log가 떴다. 123456789101

ivvve.github.io

 

 

Step 04 - 메일 코드 작성

  • javax의 mail 라이브러리는 실제 보내질 메일 객체를 가집니다. 이 라이브러리만 사용하더라도 메일을 보내는데는 지장이 없겠지만 사용법이 꽤 복잡합니다. 그래서 스프링에서 mail 라이브러리를 쉽게 사용할 수 있도록 해주는데, 이것이 바로 support 라이브러입니다. 실제 메일 객체에 여러 값들을 간단히 넣어서 전송할 수 있도록 해줍니다.

 

 

  • gmail 이메일을 사용하여 네이버로 이메일을 전송하도록 테스트를 해보았습니다!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@Controller
@RequestMapping("/app/member/*")
public class MemberController {
    
    @Autowired
    protected JavaMailSender gmailMailSender;
 
    @PostMapping(value = "/app/member/mailsend")
    public boolean mailsend(String email) throws Exception{
        try{
            MimeMessage mail = gmailMailSender.createMimeMessage();
            MimeMessageHelper mailHelper = new MimeMessageHelper(mail, "UTF-8");
            
            mailHelper.setTo("s_cova_0418@naver.com");    // 받는 사람 셋팅
            mailHelper.setSubject("제목이당");            // 제목 셋팅
            mailHelper.setText("내용이당");               // 내용 셋팅
 
            // 메일 전송
            gmailMailSender.send(mail);
        }catch(MessagingException e){
            System.out.println("MessagingException");
            e.printStackTrace();
        }
        return true;
    }
}
 
cs

 

728x90
반응형