Email을 보내야하는 코드를 작성해야하는데 에러가 있었어서 기록!!
📫 Email 보내는 방법
1. dependency 추가
2. SMTP 설정
3. 이메일 보내기
1. Dependency 추가 📝
+ 필요한 디펜던시를 찾을 땐, 여기를 이용하면 된다!
나는 이 부분 때문에 에러가 났었다! 처음에 javax.mail 디펜던시를 추가 했었는데 찾아보니 이 디펜던시는 Java에서 메일을 보낼 때 사용하는 디펜던시라고 했다.
javax.net.ssl.SSLHandshakeException이 발생했는데 이유는 HTTPS를 지원하지 않아서 인 것 같다. (더 찾아봐야지!) SSL 어쩌구 저쩌구.... 더 찾아볼 것!
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
그래서 위의 디펜던시가 아닌 아래 Dependency 또는 Gradle를 추가해줘야한다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.5.1</version>
</dependency>
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-mail', version: '2.5.1'
2. SMTP 설정 🔧
2-1. Naver SMTP 설정
이메일을 보낼 계정이 로그인하여 메일함에 들어가 아래와 같이 SMTP 사용을 가능하게 해줍니다.
2-2. Spring Boot SMTP 설정
위 사진에서 하단에 밑줄친 SMTP 서버명과 SMTP 포트를 이용하여 Spring Boot에 properties 또는 yml 파일에 설정을 해줍니다. username과 password는 본인의 아이디와 비밀번호를 입력하시면 됩니다.
spring.mail.host=smtp.naver.com
spring.mail.port=465
spring.mail.username={YOUR_NAVER_ID}
spring.mail.password={YOUR_NAVER_PASSWORD}
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.ssl.enable=true
spring:
mail:
host: smtp.naver.com
port: 465
username: {YOUR_NAVER_ID}
password: {YOUR_NAVER_PASSWORD}
properties:
mail:
smtp:
auth: true
ssl:
enable: true
3. 메일보내기 📩
@RequiredArgsConstructor
public class SendMail {
private final JavaMailSender sender;
public void sendMail(){
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(YOUR_NAVER_ID); // 보내는 이메일
message.setTo(MESSEAGE_RECEIVER_ID); // 받는 이메일
message.setSubject(TITLE); // 메일 제목
message.setText(CONTENT); // 메일 내용
message.setSentDate(new Date()); // 송신 날짜
sender.send(message); // 실제 보내기
}
}
추가사항 🤷♀️
1. SSL의 버전이 높아진 것이 TSL로 알고 있다. SSLHandshakeException에 대해서 더 찾아봐야겠다.
2. javax.mail 디펜던시를 사용할 땐, MimeMessage를 이용하는데 JavaMessageSender하고 어떻게 다른지 찾아봐야겠다!
'Develop > Spring' 카테고리의 다른 글
[Spring/JPA] 연관관계 매핑 (0) | 2020.12.20 |
---|---|
[Spring/JPA] 영속성(persistence) (0) | 2020.12.15 |
[Spring]테스트 기본 구조? 사용하면 편한 구조? (0) | 2020.11.02 |
[Spring] DI(Dependency Injection)/의존성주입 (0) | 2020.10.23 |
Spring이란? (0) | 2020.10.17 |