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

스프링 프레임워크를 사용한다면, 스프링에서 제공하는 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 서버를 이용하여 메일을 보내고 있습니다.

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

번호 제목 글쓴이 날짜 조회 수
351 [Gemini] HttpURLConnection 클래스를 이용한 데이터 전송 방식 비교 황제낙엽 2024.03.14 6
350 google-auth-library-oauth2-http 라이브러리 다운로드 황제낙엽 2023.11.19 6
349 firebase-admin-java 라이브러리 다운로드 (firebase admin sdk library) 황제낙엽 2023.11.19 1
348 Enum 활용 (개인블로그, Effective Java) file 황제낙엽 2023.11.02 1
347 Enum 활용 (우아한기술블로그) file 황제낙엽 2023.11.02 4
346 servlet name 에 camel case 를 사용해서는 안되는 이유 황제낙엽 2023.10.24 2
345 org.apache.commons.fileupload.servlet.ServletFileUpload 이용 예시 황제낙엽 2023.08.25 2
344 ServletFileUpload.parseRequest() 실행 결과 리스트가 비어있는 오류 황제낙엽 2023.08.25 15
343 어떤 multi-part 설정도 제공되지 않았기 때문에, part들을 처리할 수 없습니다. file 황제낙엽 2023.08.23 82
342 (Bard) the request was rejected because no multipart boundary was found file 황제낙엽 2023.08.23 6
341 (Bard) multipart/form-data 요청 처리를 위한 MultipartHttpServletRequest file 황제낙엽 2023.08.21 4
340 [JsonNode] depth 가 여러 단계인 json data 내부를 조회하는 java code 예제 (from Bard) file 황제낙엽 2023.08.09 20
339 JPA 개요 황제낙엽 2023.07.25 3
338 javax.mail 샘플 몇가지 (테스트 수행전) 황제낙엽 2023.06.26 2
337 java 프로그램으로 회원가입용 인증 메일을 보내는 방법 (from naver / 테스트 성공) file 황제낙엽 2023.06.24 219
» java 프로그램으로 회원가입용 인증 메일을 보내는 방법 (from bing / 테스트 실패) [1] 황제낙엽 2023.06.23 3
335 base64 encode, decode 황제낙엽 2023.06.12 8
334 BASE64Encoder, BASE64Decoder 의 deprecated 황제낙엽 2023.06.12 1
333 문자의 ASCII 값 테이블 - String.charAt() file 황제낙엽 2023.03.28 0
332 java로 알파벳 대소문자를 랜덤으로 조합하는 코드 만들어줘 (ChatGPT) 황제낙엽 2023.03.28 1