회원 기능만 계속 파고 있다. 이번에는 비밀번호를 잊어버렸을 경우 임시 비번을 이메일에 담아서 전송하는 코드를 짜보려고 한다.
짜증나는 본론부터 말하자면 더 이상 구글 계정으로 메일 전송이 어려울 것 같다.
이유: 구글에서 메일을 보내려면 보안 수준이 낮은 앱의 액세스를 풀어야 한다.
인터넷에서 다들 이 설정을 풀라고 해서 갔더니 이제 더 이상 못 쓴단다....
그래서 네이버 계정으로 전송 시도했더니 바로 돼서 진짜 허무했다.
이번 포스팅은 정말 순전한 이메일 전송이다. 단위 테스트를 위해서 기능을 전부 제거했다.
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);
}
}
이메일 전송에 사용할 계정의 아이디와 비번을 잘 적고
받는 사람의 이메일 주소만 하드코딩에서 파라미터로 받아오는 값으로 대체하면 될 거 같다.
이제 이걸 발전시켜볼 것이다.