회원가입용 인증 메일을 보내는 방법은 다양합니다.

스프링 프레임워크를 사용한다면, 스프링에서 제공하는 JavaMailSender를 이용하여 구현할 수 있습니다.

JavaMailSender를 이용하면 SMTP 서버를 이용하여 메일을 보낼 수 있습니다.

JavaMailSender를 사용하는 방법은 다음과 같습니다.

 

  1. MailConfig 작성 - xml로 설정하지 않고 java파일로 설정했다.
  2. Tempkey.java 생성
  3. MailHandler.java 생성
  4. Member.java - domain 클래스 정의
  5. MemberMapper.xml 에 쿼리문 생성
  6. MemberDao.java
  7. MemberService 인터페이스
  8. MemberServiceImpl.java

 

 

스프링 프레임워크를 사용하지 않을 경우에는 JavaMailSender를 사용할 수 없습니다.

하지만 JavaMailSender와 비슷한 기능을 하는 JavaMail API를 사용하여 구현할 수 있습니다.

JavaMail API를 이용하여 메일을 보내는 방법은 다음과 같습니다.

 

public void sendEmail(String toEmail, String subject, String body) throws MessagingException {
    Properties props = new Properties();
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "587");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");

    Session session = Session.getInstance(props, new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("your_email_address@gmail.com", "your_email_password");
        }
    });

    Message message = new MimeMessage(session);
    message.setFrom(new InternetAddress("your_email_address@gmail.com"));
    message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toEmail));
    message.setSubject(subject);
    message.setText(body);

    Transport.send(message);
}

위 코드에서는 Gmail SMTP 서버를 이용하여 메일을 보내고 있습니다.

이메일 주소와 비밀번호를 입력하면 됩니다. 

번호 제목 글쓴이 날짜 조회 수
326 (Bard) the request was rejected because no multipart boundary was found file 황제낙엽 2023.08.23 729
325 (Bard) multipart/form-data 요청 처리를 위한 MultipartHttpServletRequest file 황제낙엽 2023.08.21 584
324 JPA 개요 황제낙엽 2023.07.25 710
323 javax.mail 샘플 몇가지 (테스트 수행전) 황제낙엽 2023.06.26 917
322 java 프로그램으로 회원가입용 인증 메일을 보내는 방법 (from naver / 테스트 성공) file 황제낙엽 2023.06.24 930
» java 프로그램으로 회원가입용 인증 메일을 보내는 방법 (from bing / 테스트 실패) [1] 황제낙엽 2023.06.23 1045
320 base64 encode, decode 황제낙엽 2023.06.12 664
319 BASE64Encoder, BASE64Decoder 의 deprecated 황제낙엽 2023.06.12 937
318 문자의 ASCII 값 테이블 - String.charAt() file 황제낙엽 2023.03.28 803
317 java로 알파벳 대소문자를 랜덤으로 조합하는 코드 만들어줘 (ChatGPT) 황제낙엽 2023.03.28 659
316 ajax 로 post 데이터를 servlet 으로 전달 받기 (with nexacro) [1] secret 황제낙엽 2023.02.26 0
315 구글 클라우드 비전 API 사용하기 (Google Cloud Vision API) 황제낙엽 2023.02.22 691
314 람다식(Lambda Expressions in Java) file 황제낙엽 2022.12.03 1225
313 ConcurrentLinkedQueue와 LinkedBlockingQueue 황제낙엽 2022.04.06 829
312 java.util.Queue file 황제낙엽 2022.04.06 9007
311 숫자형 클래스 BigInterger (int, long 범위 초과) 황제낙엽 2022.01.16 1089
310 LocalDate.now() 오늘 날짜 황제낙엽 2022.01.16 660
309 [java.lang.ProcessBuilder] “매개변수가 틀립니다” 혹은 ”Cannot run program” 황제낙엽 2021.10.15 1030
308 특정 경로에서 쉘 명령어 실행하기 (ProcessBuilder) 황제낙엽 2021.10.08 799
307 HP-UX, IBM-AIX 황제낙엽 2021.06.23 1083