반응형

pom.xml dependency (라이브러리) 추가

New Project

빈 프로젝트 생성

 

 

Dependencies:

  • Java Mail Sender

 

 

pom.xml (fastlms)

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

 

 

Maven

  • Maven 로드 및 라이브러리 추가 확인

 

 

com.zerobase.fastlms.components

  • components 패키지 생성

 

 

MailComponents.java

  • 메일 전송을 위한 클래스 생성

 


Gmail 계정 설정

 

메일 발송 계정 설정 (Gmail) (1)

  • 설정 - 보안 - Google에 로그인
  • 2단계 인증 - 사용

 

 

메일 발송 계정 설정 (Gmail) (2)

  • 앱 비밀번호 - 생성

 

 

앱 비밀번호 생성 (1)

  • 앱 선택(텍스트 입력)

 

 

앱 비밀번호 생성 (2)

  • SMTP테스트

 

 

앱 비밀번호 생성 (3)

  • 생성된 앱 비밀번호: trgxsaws********

 

 

smtp.txt

  • 앱 비밀번호를 저장할 텍스트 파일 생성

 

 

smtp.txt

gmail key:

trgxsaws********

 

 

앱 비밀번호 생성 (4)

  • SMTP테스트 앱 비밀번호 생성 완료 확인

 

 

Gmail - 설정 - 모든 설정보기 - 전달 및 POP/IMAP

  • POP 다운로드 상태: POP가 사용 설정되어 있습니다. (확인)
  • IMAP 액세스 상태: IMAP를 사용할 수 있습니다. (확인)

 

 

application.yml

Mail 사용 설정

mail:
  host: smtp.gmail.com
  port: 587
  username: nightfallsky@knou.ac.kr
  password: trgxsawsdqrlbxsm
  properties:
    mail:
      smtp:
        starttls:
          enable: true

 

 


메일 발송 테스트

 

MailConponents.java

메일 발송 테스트용 - 메소드 생성

  • javaMailSender.send(SimpleMailMessage... simpleMessages)

 

 

sendMailTest()

메일 발송 테스트용 - 메소드 구현

@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);
    }
}

 

 

MainController.java

  • 'index'에서 바로 메일이 발송되도록 설정
@RequiredArgsConstructor
@Controller
public class MainController {

    private final MailComponents mailComponents;

    @RequestMapping("/")
    public String index() {

        mailComponents.sendMailTest();

        return "index";
    }
}

 

 

localhost:8080

  • 실행하여 'index' 페이지 접근

 

 

  • 도착 메일 확인

 

 

  • 메일이 정상적으로 전달됨을 확인
  • 그러나 단순한 text가 아니라 html이 전송되어야 함

 


HTML을 포함한 메일 발송 테스트

 

sendMail()

  • javaMailSender.send(MimeMessagePreparator mimeMessagePreparator)

 

 

MailComponents.java

  • 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;
}

 

 

MainController.java

  • 'index'에서 수신할 메일 주소, 제목, 내용(HTML 포함)을 설정

 

 

localhost:8080

  • 'index'에서 새로고침(F5, refresh)하여 메일 발송

 

 

  • 메일 도착 확인

 

 

  • HTML 적용된 text mail 수신 확인

 

반응형

+ Recent posts