반응형
pom.xml dependency (라이브러리) 추가
빈 프로젝트 생성
Dependencies:
- Java Mail Sender
- spring-boot-starter-mail dependency 복사
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
- Maven 로드 및 라이브러리 추가 확인
- components 패키지 생성
- 메일 전송을 위한 클래스 생성
Gmail 계정 설정
메일 발송 계정 설정 (Gmail) (1)
- 설정 - 보안 - Google에 로그인
- 2단계 인증 - 사용
메일 발송 계정 설정 (Gmail) (2)
- 앱 비밀번호 - 생성
앱 비밀번호 생성 (1)
- 앱 선택(텍스트 입력)
앱 비밀번호 생성 (2)
- SMTP테스트
앱 비밀번호 생성 (3)
- 생성된 앱 비밀번호: trgxsaws********
- 앱 비밀번호를 저장할 텍스트 파일 생성
gmail key:
trgxsaws********
앱 비밀번호 생성 (4)
- SMTP테스트 앱 비밀번호 생성 완료 확인
Gmail - 설정 - 모든 설정보기 - 전달 및 POP/IMAP
- POP 다운로드 상태: POP가 사용 설정되어 있습니다. (확인)
- IMAP 액세스 상태: IMAP를 사용할 수 있습니다. (확인)
Mail 사용 설정
mail:
host: smtp.gmail.com
port: 587
username: nightfallsky@knou.ac.kr
password: trgxsawsdqrlbxsm
properties:
mail:
smtp:
starttls:
enable: true
메일 발송 테스트
메일 발송 테스트용 - 메소드 생성
- javaMailSender.send(SimpleMailMessage... simpleMessages)
메일 발송 테스트용 - 메소드 구현
@Component
public class MailComponents {
private final JavaMailSender javaMailSender;
public void sendMailTest() {
SimpleMailMessage msg = new SimpleMailMessage();
msg.setTo("81scramble@gmail.com");
msg.setSubject("안녕하세요. 제로베이스 입니다.");
msg.setText(" 안녕하세요. 제로베이스 입니다. 반갑습니다. ");
javaMailSender.send(msg);
}
}
- 'index'에서 바로 메일이 발송되도록 설정
@RequiredArgsConstructor
@Controller
public class MainController {
private final MailComponents mailComponents;
@RequestMapping("/")
public String index() {
mailComponents.sendMailTest();
return "index";
}
}
- 실행하여 'index' 페이지 접근
- 도착 메일 확인
- 메일이 정상적으로 전달됨을 확인
- 그러나 단순한 text가 아니라 html이 전송되어야 함
HTML을 포함한 메일 발송 테스트
- javaMailSender.send(MimeMessagePreparator mimeMessagePreparator)
- sendMail()의 반환값을 boolean으로 설정하여
- 기본값을 'false'로 설정
- 메일이 정상적으로 발송되면 'true'로 변경하고,
- 그런지 않은 경우 에러를 출력하도록 예외처리함
public boolean sendMail(String mail, String subject, String text) {
boolean result = false;
MimeMessagePreparator msg = new MimeMessagePreparator() {
@Override
public void prepare(MimeMessage mimeMessage) throws Exception {
MimeMessageHelper mimeMessageHelper =
new MimeMessageHelper(
mimeMessage, true, "UTF-8");
mimeMessageHelper.setTo(mail);
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(text, true);
}
};
try {
javaMailSender.send(msg);
result = true;
} catch (Exception e) {
System.out.println(e.getMessage());
}
return result;
}
- 'index'에서 수신할 메일 주소, 제목, 내용(HTML 포함)을 설정
- 'index'에서 새로고침(F5, refresh)하여 메일 발송
- 메일 도착 확인
- HTML 적용된 text mail 수신 확인
반응형
'cs > java-spring-boot' 카테고리의 다른 글
[Zero-base] 6-12. 전송된 메일을 통한 계정 활성화 구현 (0) | 2022.02.16 |
---|---|
[Zero-base] 6-11. 회원가입 후 메일 전송 (0) | 2022.02.16 |
[Zero-base] 6-9. 회원가입 POST SUBMIT된 내용 JPA를 통한 DB저장 (0) | 2022.02.16 |
[Zero-base] 6-8. 회원가입 입력폼 HTML작성과 서버 전송 (0) | 2022.02.15 |
[Zero-base] 6-7. 메인 페이지 작성 및 메뉴 링크 작성 (0) | 2022.02.15 |