내 블로그 목록

2018년 8월 2일 목요일

[SpringFramework] 메일 발송_SimpleMailSender

[해야할 일]

(1)pom.xml에 필요한 라이브러리들 등록
(2)servlet-context.xml에 SimpleMaileSender 설정 빈들 등록
(3)사용하려는 이메일 계정의 보안 수준 낮추기
(4)Controller 생성
(5)Service 클래스 생성
(6)servlet-context.xml에서 Service 클래스의 빈 등록
(7)View 생성
(8)Home에서 발송 a태그 만들기



(1)pom.xml에 필요한 라이브러리들 등록


1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- 08/03 메일발송을 위한 라이브러리 설정 시작 -->
       <!-- https://mvnrepository.com/artifact/javax.mail/mail -->
       <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>


(2)servlet-context.xml에 SimpleMaileSender 설정 빈들 등록

이때 username에는 메일을 발송하는 이메일/ password는 계정의 비밀번호를
입력해야 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
   <!-- 메일 발송을 위한 JavaMailSenderImpl 빈 설정 -->
   <beans:bean id="mailSender"
       class="org.springframework.mail.javamail.JavaMailSenderImpl">
       <beans:property name="host" value="smtp.gmail.com" />
       <beans:property name="port" value="587" /><!-- 465 or 25 -->
       <beans:property name="username" value="ryuinhye9501@gmail.com" />
       <beans:property name="password" value="계정의 비밀번호" />
       <beans:property name="defaultEncoding" value="utf-8" />
       <beans:property name="javaMailProperties">
           <beans:props>
               <beans:prop key="mail.transport.protocol">smtp</beans:prop>
               <beans:prop key="mail.smtp.auth">true</beans:prop>
               <beans:prop key="mail.smtp.starttls.enable">true</beans:prop>
               <beans:prop key="mail.debug">true</beans:prop>
           </beans:props>
       </beans:property>
   </beans:bean>



(3)사용하려는 이메일 계정의 보안 수준 낮추기

본인은 구글 계정을 사용했기 때문에, 구글 계정 기준으로 설명하겠다.
참고로 구글 계정은 주민등록번호를 등록하지 않고도 여러 개를 만들 수 있기 때문에 임시로 사용하기 좋다.


Google 계정에 접속한다.


클릭. 스크롤을 쭉 내리면 ‘보안 수준이 낮은 앱 허용: 사용 안함’이 있다.

버튼을 클릭해서 ‘사용’으로 바꿔준다.




이 작업을 왜 하는가 하면, 보안 수준이 낮아야 메일을 발송할 수 있다.

(4)Controller 생성


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.bitcampi.mvc0803;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class MailSenderController {
   
   @Autowired
   SimpleMailSenderService mailsenderSerivce;
   
   @RequestMapping("mail/simpleMail")
   public String sendSimpleMail() {
       
       //메일 발송
       mailsenderSerivce.sendSimpleMail();
       
       return "sendmail";
   }
}


(5)Service 클래스 생성


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
package com.bitcampi.mvc0803;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
public class SimpleMailSenderService {
   @Autowired
   JavaMailSender mailSender;
   
   public void sendSimpleMail() {
       //SimpleMailMessage 생성
       SimpleMailMessage message = new SimpleMailMessage();
       
       //SimpleMailMessage 설정
       message.setFrom("ryuinhye95@gmail.com");
       message.setTo("ryuinhye95@gmail.com");
       message.setSubject("[공지] 무더위를 시원하게 보낼 수 있는 절호의 기회!");
       message.setText("지금 바로 확인하세요!");
       
       mailSender.send(message);
       
       System.out.println("발송완료");
   }
}


굵은 색으로 표시한 것이 무엇인지 궁금할 것이다.




(6)servlet-context.xml에서 Service 클래스의 빈 등록


1
2
<!-- SimpleMailSenderSerivce 빈 등록 -->
   <beans:bean id="SimpleMailSenderService" class="com.bitcampi.mvc0803.SimpleMailSenderService"/>



(7)View 생성 [sendmail.jsp]

뷰의 이름은 Controller에서 return 했던 이름과 같게 설정해준다.



1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>메일 발송</h1>
</body>
</html>



(8) 목차 만들기 [home.jsp]

참고로 Spring legacy 프로젝트를 생성했을 때, default로 있는 home.jsp를 이용했다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<%@ page session="false" %>
<html>
<head>
   <title>Home</title>
</head>
<body>
<h1>
   Spring MVC 2018/08/03
</h1>
<ul>
   <li><a href="mail/simpleMail">메일 전송(SimpleMail)</a></li>
</ul>
</body>
</html>




결과)


댓글 없음:

댓글 쓰기