사용자 정보에 이메일 추가하기 → 레벨 추가와 동일하게 진행

  1. DB의 User 테이블에 email 필드 추가
  2. User 클래스에 email 프로퍼티를 추가
  3. UserDao 의 userMapper 와 insert() update() 에 email 필드 처리 코드 추가
  4. 테스트 코드 수정

1차 목표: email 필드 추가하기 + 테스트 코드 성공 시키기

JavaMail

javax.maili 패키지

업그레이드 메서드 upgradeLevel()

<aside> 📌

upgradeLevel() 안에 JavaMail 코드는 직접 넣지 않는 편이 낫다는 건 이제 알제?

</aside>

protected void upgradeLevel(User user) {
  policy.upgradeLevel(user);
  userDao.update(user);
  sendUpgradeEmail(user);
}

private void sendUpgradeEmail(User user){
  Properties props = new Properties();
  props.put("mail.smtp.host", "mail.ksug.org");
  Session s = Session.getInstance(props, null);

  MimeMessage message = new MimeMessage(s);

  try{
    message.setFrom(new InternetAddress("[email protected]"));
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(user.getEmail()));
    message.setSubject("[TOBY SPRING] Upgrade 안내");
    message.setText("사용자 등급이 "+user.getLevel().name() + "로 업그레이드 되었습니다.");
    
    Transport.send(message);
  } catch (AddressException e) {
    throw new RuntimeException(e);
  } catch (MessagingException e) {
    throw new RuntimeException(e);
  }
}