비버놀로지

[Spring JPA] 1-6. 회원 가입 폼 서브밋 처리 본문

LANGUAGE STUDY/Spring

[Spring JPA] 1-6. 회원 가입 폼 서브밋 처리

KUNDUZ 2021. 4. 30. 19:44
728x90

먼저 AccountController에서 회원 가입을 요청했을 때 정보를 받을 수 있도록 아래와 같은 코드를 추가해 줍니다.

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-mail</artifactId>
		</dependency>

 

만약에 위와 같은 dependency가 없을 경우 pom.xml에 추가를 해줍니다.

 

위의 dependency를 활용해 메일을 보낼 수 있습니다.

 

 

	private final JavaMailSender javaMailSender;
    
    	@PostMapping("/sign-up")
	public String signUpSubmit(@Valid SignUpForm signUpForm, Errors errors) {
		if (errors.hasErrors()) {
			return "account/sign-up";
		}
		Account account = Account.builder().email(signUpForm.getEmail()).nickname(signUpForm.getNickname())
				.password(signUpForm.getPassword()) // TODO encoding 해야됨
				.studyCreatedByWeb(true).studyEnrollmentResultByWeb(true).studyUpdatedByWeb(true).build();
		Account newAccount = accountRepository.save(account);

		newAccount.generateEmailCheckToken();
		SimpleMailMessage mailMessage = new SimpleMailMessage();
		mailMessage.setSubject("스터디올래, 회원 가입 인증");
		mailMessage.setText(
				"/check-email-tocken?token=" + newAccount.getEmailCheckToken() + "&email=" + newAccount.getEmail());
		javaMailSender.send(mailMessage);
		return "redirect:/index.html";
	}

 

 

위에서 사용한 javaMailSender를 사용하기 위해서 ConsoleMailSender를 만들어 줍니다.

 

Spring에서 메일을 보내주지만, 먼저 console로 찍어주기 위해 ConsoleMailSender를 만들어 줍니다.

 

package com.studyolle;

import java.io.InputStream;

import javax.mail.internet.MimeMessage;

import org.springframework.context.annotation.Profile;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.stereotype.Component;

import lombok.extern.slf4j.Slf4j;

@Profile("local")
@Component
@Slf4j
public class ConsoleMailSender implements JavaMailSender{

	@Override
	public void send(SimpleMailMessage simpleMailMessage) throws MailException {
		log.info(simpleMailMessage.getText());
		
	}

	@Override
	public void send(SimpleMailMessage... simpleMessages) throws MailException {
		// TODO Auto-generated method stub
		
	}

	@Override
	public MimeMessage createMimeMessage() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public MimeMessage createMimeMessage(InputStream contentStream) throws MailException {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void send(MimeMessage mimeMessage) throws MailException {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void send(MimeMessage... mimeMessages) throws MailException {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void send(MimeMessagePreparator mimeMessagePreparator) throws MailException {

	}

	@Override
	public void send(MimeMessagePreparator... mimeMessagePreparators) throws MailException {
		// TODO Auto-generated method stub
		
	}


}

 

위와 같이 send를 요청했을 경우 log를 찍도록 작성합니다.

 

실행을 하게되면 위과 같은 콘솔이 찍히는 것을 확인 할 수 있습니다.

 

 

 

 

728x90
Comments