[스프링-7]Spring구글 smtp 이메일 보내기

 

 

1. JSP 파일인  email.jsp 구현하기

1. 수신자 이메일을 입력하게 되면 설정해둔 내용을 이메일로 받아 볼수 있도록 하겠씁니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
 
<form action="/shop/email/send.do" method="post">
 
<H2>인증번호 보내기</H2>
 
이메일 입력 : <input name="send">
<input type="submit" value="전송">
 
</form>
 
 
<span style="color:red;">${message}</span>
 
</body>
</html>
cs

 

2.  Controller 구현

** => JSP 페이지에서 action 값인 /shop/email/send.do 로 가보겠습니다.

 

 

 

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.Ims.shop.controller;
 
import javax.inject.Inject;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
 
import com.Ims.shop.service.CartService;
import com.Ims.shop.service.EmailService;
import com.Ims.shop.vo.SendVo;
 
@Controller
public class EmailController {
    
    @Inject
    JavaMailSender mailSender;
    
    private EmailService emailService;
    
    @Autowired
    public EmailController(EmailService emailService) {
        this.emailService = emailService;
    }
    
    
    
    @RequestMapping("/email")
    public String email() {
        return "email";
    }
    
    
    
    @RequestMapping("/email/send.do")
    public String send(SendVo vo,Model model) { // 저는 input type 값을 클래스로 생성해서
   //클래스로 만들게요 ~
        
        System.out.println("v########################"+vo.getSend());
        
        try {
            emailService.sendMail(vo); // 4번에서 구현할게요 emailserivce 부분!!
 
            model.addAttribute("message""이메일 발송완료");
            
        } catch (Exception e) {
            e.printStackTrace();
            model.addAttribute("message""이메일 발송 실패");
            
        }
        
        return "email";
    }
}
 
cs

 

 

3.  SendVo  Class 구현

**

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.Ims.shop.vo;
 
public class SendVo {
 
    
    private String send;
// setter,getter 값 생성
// @Data 사용가능!


    public String getSend() {
        return send;
    }
 
    public void setSend(String send) {
        this.send = send;
    }
}
 
cs

 

4  EmailService 구현하기

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package com.Ims.shop.service;
 
import java.util.List;
 
import javax.inject.Inject;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
 
import com.Ims.shop.dao.AdminDao;
import com.Ims.shop.dao.NoticeDao;
import com.Ims.shop.vo.MemberVo;
import com.Ims.shop.vo.NoticeVo;
import com.Ims.shop.vo.SendVo;
 
@Service
public class EmailService {
    
    
    @Inject
    JavaMailSender mailSender;
 
    
    
    public void sendMail(SendVo vo) {
        
    
        try {
            
            MimeMessage msg = mailSender.createMimeMessage();
            msg.addRecipient(RecipientType.TO, new InternetAddress(vo.getSend()));
            msg.addFrom(new InternetAddress[] {
                    new InternetAddress("######","홍길동")
            });
            msg.setSubject("테스트 메일 제목"); // 메일제목을 입력해주시면됩니다.,
            msg.setText("테스트입니다"); // 메일 내용을 적어주시면됩니다. 여기서 값을넣어 활용하기
            mailSender.send(msg); // 메일을 mailsender 에 넣어서 전송!!
            
            
        } catch (Exception e) {  // 실패시 ㅇㅖ외처리부분1
                  e.printStackTrace();
                  System.out.println("에러됨");
        }
        
        
        
    };
    
    
}    
    
    
    
cs

5. root-content.xml 구현 !!

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<bean id="mailSender" 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="####2차인증후 앱키! 비빌번호아님주의"/>
<property name="javaMailProperties">
<props>
<prop key="mail.transport.protocol">smtp</prop>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.debug">true</prop>
<prop key="mail.smtp.ssl.protocols">TLSv1.2</prop>
<prop key="mail.smtp.ssl.trust">smtp.gmail.com</prop> // 다른소스는없는데 이게 있어야해요!!
</props>
</property>
</bean>
cs

 

 

6. 여기까지 해서  구현이 완성입니다.

 

 

 

 

이상으로 끝가지 봐주셔서 감사합니다 ~~