스프링 비번찾기 - 단순 이메일 전송

jinvicky·2023년 2월 5일
0

2023 Spring Project TIL

목록 보기
7/32

회원 기능만 계속 파고 있다. 이번에는 비밀번호를 잊어버렸을 경우 임시 비번을 이메일에 담아서 전송하는 코드를 짜보려고 한다.
짜증나는 본론부터 말하자면 더 이상 구글 계정으로 메일 전송이 어려울 것 같다.
이유: 구글에서 메일을 보내려면 보안 수준이 낮은 앱의 액세스를 풀어야 한다.

인터넷에서 다들 이 설정을 풀라고 해서 갔더니 이제 더 이상 못 쓴단다....
그래서 네이버 계정으로 전송 시도했더니 바로 돼서 진짜 허무했다.

이번 포스팅은 정말 순전한 이메일 전송이다. 단위 테스트를 위해서 기능을 전부 제거했다.

package com.fastcampus.ch4.service;

import org.apache.commons.mail.HtmlEmail;
import org.springframework.stereotype.Service;


@Service
public class MemberServiceImpl{

    public void sendEmail() throws Exception {
        // Mail Server 설정
        String charSet = "utf-8";
        String hostSMTP = "smtp.naver.com"; //네이버 이용시 smtp.naver.com
        String hostSMTPid = ""; //네이버 계정 아이디 넣기
        String hostSMTPpwd = ""; //네이버 계정 비밀번호.

        // 보내는 사람 EMail, 제목, 내용
        String fromEmail = "jinvicky@naver.com";
        String fromName = "진이마켓";
        String subject = "진이마켓 임시 번호입니다.";
        String msg = "";

        msg += "<p>임시 비밀번호</p> ";

        // 받는 사람 E-Mail 주소
        String mail = "jinvicky17@gmail.com"; //사용자로부터 입력받은 이메일 주소로 하면 된다.
        try {
            HtmlEmail email = new HtmlEmail();
            email.setDebug(true);
            email.setCharset(charSet);
            email.setSSL(true);
            email.setHostName(hostSMTP);
            email.setSmtpPort(587); //네이버 이용시 587이라고 한다.

            email.setAuthentication(hostSMTPid, hostSMTPpwd);
            email.setTLS(true);
            email.addTo(mail, charSet);
            email.setFrom(fromEmail, fromName, charSet);
            email.setSubject(subject);
            email.setHtmlMsg(msg);
            email.send();
        } catch (Exception e) {
            System.out.println("메일발송 실패 : " + e);
        }
    }

이메일 전송에 사용할 계정의 아이디와 비번을 잘 적고
받는 사람의 이메일 주소만 하드코딩에서 파라미터로 받아오는 값으로 대체하면 될 거 같다.
이제 이걸 발전시켜볼 것이다.

참고한 사이트
https://m.blog.naver.com/heartflow89/221114309890

profile
Front-End와 Back-End 경험, 지식을 공유합니다.

0개의 댓글

관련 채용 정보