spring에서 메일보내기

이한영·2021년 11월 19일
0

spring

목록 보기
5/5
post-thumbnail

spring에서 메일보내기

오늘은 spring환경에서 메일보내기를해보즈ㅡㅏ

구글 계정을 일단 생성을 해야한다!

계정 설정을 해야 라이브러리를 통해서 메일을 보낼 수 있다.

계정관리를 들어간다.

보안카테고리를 들어간다.

2단계 인증을 클릭하고 들어가서 다시로그인을 한다.

여기서 전화번호 인증을하고 다시 보안카테고리로 돌아와서

앱 비밀번호를 설정하는 메뉴로 들어가서 다시 로그인을 한다.

여기서 앱 비밀번호를 설정해줘야 한다.

여기서 앱선택에서 기타를 선택하고 생성을 누르면

앱 비밀번호를 발급해준다. 이 비밀번호를 어딘가에 메모를 해놓자!

만약 이 비밀번호를 까먹었다면 앱키를 다시만들어주면 된다 ^^

이제 본격적으로 들어가보자

들어가기전 알아야할 용어

메일을 보내주기위한 서버(SMTP server)가 필요하다!

그 서버가 없으니 구글서버를 빌려야한다!

이 서버를 사용하기 위해서 구글계정을 만들고 설정을 했던거다잉

SMTP : Simple Mail Transfer Protocol

(메일보내기)

인터넷상에서 메일을 보낼 때 사용하는 표준프로토콜

POP3 : Post Office Protocol3

(메일 받기)

사용자의 메일을 내PC로 가져올때 사용하는 프로토콜

(네이버 : 유료, 다음 : 무료)

메일 보내기

spring 프로젝트 만들기

servlet-context.xml에 빈 생성

<!-- 메일링 -->
	<beans:bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
		<beans:property name="host" value="smtp.gmail.com"/>
		<beans:property name="port" value="587"/>
		<beans:property name="defaultEncoding" value="utf-8"/>
		<beans:property name="username" value="새로만든 구글계정 아이디"/>
		<beans:property name="password" value="앱키 비밀번호"/>
		<beans:property name="javaMailProperties">
			<beans:props>
				<beans:prop key="mail.transport.protocol">smtp</beans:prop>
				<beans:prop key="mail.smtp.auth">true</beans:prop> <!-- 2단계본인인증을 했으니 보안적으로 true라고 준다 -->
				<beans:prop key="mail.smtp.starttls.enable">true</beans:prop>
				<beans:prop key="mail.debug">true</beans:prop>
			</beans:props>
		</beans:property>
	</beans:bean>

servlet-context.xml에 component등록해주기

<context:component-scan base-package="spring.service" />

라이브러리 가져다놓기

pom.xml

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

클래스 만들기

클래스에 @service등록

@Service
public class MailService {

	@Autowired
	private MailSender mailSender;
	
	public void sendEmail(String toAddress, String fromAddress,
					String subject, String msgBody) {
		SimpleMailMessage smm = new SimpleMailMessage();
		smm.setFrom(fromAddress);
		smm.setTo(toAddress);
		smm.setSubject(subject);
		smm.setText(msgBody);
		
		mailSender.send(smm);
	}
}

컨트롤러 만들기

@Controller
public class EmailController {
	
	@Autowired
	private MailService mailService;


	//DB작업이 필요한 만큼 DAO들 선언해야함
	
	//아이디와 이메일이 같으면 특정한 메일이 가게..
	@RequestMapping("/noticeMail")
	public ModelAndView sendEmail(String id, String email) throws Exception {
		ModelAndView mv = new ModelAndView();
		
		String addr = "새로만든 구글계정";
		
		String subject = "[😀😀] 알림메일 입니다.";
		
		String body = "안녕하세요?\r\n소통해요~\r\n SMTP메일 테스트입니다.";
		
		mailService.sendEmail(email, addr, subject, body);
		
		mv.setViewName("/");
		return mv;
	}
}

확인하기

실행을 하고 get방식으로 확인을 해보자

email 에다가 자기가 받아볼 이메일을 입력해보자!

good~

profile
동작구 사망연산자

0개의 댓글