html
Spring Boot์์ ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ์ ์ํ ์ด๋ฉ์ผ ์ ์ก: ์ข ํฉ ๊ฐ์ด๋
๋ชฉ์ฐจ
- ์๊ฐ - ํ์ด์ง 1
- Gmail ๊ณ์ ์ค์ - ํ์ด์ง 2
- ์ ํ๋ฆฌ์ผ์ด์ ์์ฑ ๊ตฌ์ฑ - ํ์ด์ง 4
- ๋ฏผ๊ฐํ ์ ๋ณด ๋ณด์ - ํ์ด์ง 6
- ์ด๋ฉ์ผ ๊ธฐ๋ฅ ๊ตฌํ - ํ์ด์ง 8
- ์ ํ์ ์์ฑ ์ฒ๋ฆฌ - ํ์ด์ง 10
- ๊ฒฐ๋ก - ํ์ด์ง 12
์๊ฐ
์ค๋๋ ์ ๋์งํธ ํ๊ฒฝ์์, ์์ ํ๊ณ ์ ๋ขฐํ ์ ์๋ ์ฌ์ฉ์ ์ธ์ฆ์ ๋ณด์ฅํ๋ ๊ฒ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด ์ค ํ๋์ ์ค์ํ ์ธก๋ฉด์ ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ๊ธฐ๋ฅ์ด๋ฉฐ, ์ด๋ ์ข ์ข ์ฌ์ฉ์์๊ฒ ์ด๋ฉ์ผ์ ์ ์กํ๋ ๊ฒ์ ์์กดํฉ๋๋ค. ์ด ๊ฐ์ด๋๋ Gmail์ SMTP ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ Spring Boot ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ์ด๋ฉ์ผ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์์ธํ ๋ค๋ฃน๋๋ค.
์ฐ๋ฆฌ๋ SMTP๋ฅผ ์ํ Gmail ์ค์ , Spring Boot ์์ฑ ๊ตฌ์ฑ, ๋ฏผ๊ฐํ ์ ๋ณด ๋ณด์, ๊ทธ๋ฆฌ๊ณ ๊ตฌํ ์ค ๋ฐ์ํ ์ ์๋ ์ ์ฌ์ ๋ฌธ์ ๋ค์ ์ดํด๋ณผ ๊ฒ์ ๋๋ค. ์ด ์ ์์ฑ ์ ๋๊น์ง ์ฝ์ผ๋ฉด, Spring Boot ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฉ์ผ ๊ธฐ๋ฅ์ ์ํํ๊ฒ ํตํฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํํํ ์ดํด๋ฅผ ๊ฐ๊ฒ ๋ ๊ฒ์ ๋๋ค.
ํต์ฌ ํฌ์ธํธ:
- Gmail SMTP ๊ตฌ์ฑ: ์ด๋ฉ์ผ ์ ์ก์ ์ํ Gmail ์ค์ ๋จ๊ณ.
- Spring Boot ๊ตฌ์ฑ: ์ ํ๋ฆฌ์ผ์ด์ ์์ฑ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ .
- ๋ณด์ ์กฐ์น: ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ ๋ณดํธ.
- ๊ตฌํ ๋จ๊ณ: ์ด๋ฉ์ผ ๊ธฐ๋ฅ ์ถ๊ฐ์ ๋ํ ์์ธํ ์๋ด.
- ๋ฌธ์ ํด๊ฒฐ: ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ฒ๋ฆฌ ๋ฐ ์ํํ ์ด์ ๋ณด์ฅ.
์ฅ๋จ์ :
์ฅ์ | ๋จ์ |
---|---|
Gmail SMTP๋ฅผ ํตํ ์ ๋ขฐํ ์ ์๋ ์ด๋ฉ์ผ ์ ์ก | Gmail ๋ณด์ ์ค์ ๊ตฌ์ฑ์ด ํ์ํจ |
์ด์ค ์ธ์ฆ์ ํตํ ํฅ์๋ ๋ณด์ | ์ ์ ํ ์ฒ๋ฆฌ๋์ง ์์ ๊ฒฝ์ฐ ๋ฏผ๊ฐํ ์ ๋ณด ๋ ธ์ถ ์ํ |
Spring Boot์์ ์ฌ์ด ํตํฉ | ๋ค๋ฅธ Spring Boot ๋ฒ์ ๊ณผ์ ํธํ์ฑ ๋ฌธ์ ๊ฐ๋ฅ์ฑ |
์ธ์ ๊ทธ๋ฆฌ๊ณ ์ด๋์ ์ฌ์ฉํ ๊น:
์ด๋ฉ์ผ ๊ธฐ๋ฅ ๊ตฌํ์ ์ฌ์ฉ์ ์ธ์ฆ, ์๋ฆผ ๋ฐ ์ปค๋ฎค๋์ผ์ด์ ๊ธฐ๋ฅ์ด ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ์์ ์ ๋๋ค. ์ด ๊ฐ์ด๋๋ ํนํ ์์ ํ ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ๋ฉ์ปค๋์ฆ์ด ํ์ํ Spring Boot๋ฅผ ์ฌ์ฉํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๊ฐ๋ฐ์์๊ฒ ์ ์ฉํฉ๋๋ค.
Gmail ๊ณ์ ์ค์
๊ฐ์
Spring Boot ์ ํ๋ฆฌ์ผ์ด์ ์์ Gmail์ ์ฌ์ฉํ์ฌ ์ด๋ฉ์ผ์ ์ ์กํ๋ ค๋ฉด SMTP ์ก์ธ์ค๋ฅผ ํ์ฉํ๋๋ก Gmail ๊ณ์ ์ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. ์ด๋ ์ด์ค ์ธ์ฆ์ ์ค์ ํ๊ณ ์ฑ ์ ์ฉ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ํฌํจํฉ๋๋ค.
Gmail SMTP ๊ตฌ์ฑ ๋จ๊ณ
- ๊ธฐ์กด Gmail ๊ณ์ ์ฌ์ฉ ๋๋ ์ ๊ณ์ ์์ฑ:
- ํจ์จ์ ์ธ ์ด๋ฉ์ผ ๊ด๋ฆฌ๋ฅผ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฉ Gmail ๊ณ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ์ด์ค ์ธ์ฆ ํ์ฑํ:
- Google ๊ณ์ ๋ณด์์ผ๋ก ์ด๋ํฉ๋๋ค.
- "Google์ ๋ก๊ทธ์ธ" ์น์ ์์ "2๋จ๊ณ ์ธ์ฆ"์ ์ ํํ๊ณ ํ๋กฌํํธ์ ๋ฐ๋ผ ํ์ฑํํฉ๋๋ค.
- ์ด๋ฅผ ํตํด ๊ณ์ ์ ์ถ๊ฐ์ ์ธ ๋ณด์ ๊ณ์ธต์ด ์ถ๊ฐ๋ฉ๋๋ค.
- ์ฑ ๋น๋ฐ๋ฒํธ ์์ฑ:
- ์ด์ค ์ธ์ฆ์ ํ์ฑํํ ํ, ๋ณด์ ์น์ ์ผ๋ก ๋์๊ฐ๋๋ค.
- "์ฑ ๋น๋ฐ๋ฒํธ"๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ฑ์ผ๋ก "๋ฉ์ผ"์, ๊ธฐ๊ธฐ๋ก "๊ธฐํ"๋ฅผ ์ ํํ ๋ค์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค(์: SpringBootApp).
- Google์ด 16์๋ฆฌ ์ฑ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ฑํฉ๋๋ค. ์ด ๋น๋ฐ๋ฒํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ์ ์ฌ์ฉ๋๋ฏ๋ก ์์ ํ๊ฒ ๋ณด๊ดํ์ญ์์ค.
์ฑ ๋น๋ฐ๋ฒํธ์ ์ค์์ฑ
์ฑ ๋น๋ฐ๋ฒํธ๋ ์ฃผ์ ๊ณ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ณต์ ํ์ง ์๊ณ ๋ ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ Gmail ๊ณ์ ์ก์ธ์ค๋ฅผ ํ์ฉํจ์ผ๋ก์จ ๋ณด์์ ๊ฐํํฉ๋๋ค. ์ด๋ฌํ ๋ถ๋ฆฌ๋ ์ฑ ๋น๋ฐ๋ฒํธ๊ฐ ์ ์ถ๋๋๋ผ๋ ๊ธฐ๋ณธ ๊ณ์ ์ด ์์ ํ๊ฒ ์ ์ง๋๋๋ก ํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์์ฑ ๊ตฌ์ฑ
๊ฐ์
Spring Boot ์ ํ๋ฆฌ์ผ์ด์ ์์ฑ์ ์ ์ ํ๊ฒ ๊ตฌ์ฑํ๋ ๊ฒ์ ์ด๋ฉ์ผ ๊ธฐ๋ฅ์ ํ์ฑํํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ SMTP ์ค์ ์ ๊ตฌ์ฑํ๊ณ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์์ ํ๊ฒ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค.
Gmail์ ์ํ ํ์ค SMTP ์ค์
๋ค์ ์ค์ ์ application.properties ํ์ผ์ ์ถ๊ฐํ์ญ์์ค:
1 2 3 4 5 6 |
spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=your-email@gmail.com spring.mail.password=your-app-password spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true |
์์ฑ ์ค๋ช
- spring.mail.host: SMTP ์๋ฒ ์ฃผ์๋ฅผ ์ง์ ํฉ๋๋ค. Gmail์ ๊ฒฝ์ฐ smtp.gmail.com์ ๋๋ค.
- spring.mail.port: SMTP ํฌํธ ๋ฒํธ์ ๋๋ค. Gmail์ TLS๋ฅผ ์ํด 587์ ์ฌ์ฉํฉ๋๋ค.
- spring.mail.username: ์ด๋ฉ์ผ ์ ์ก์ ์ฌ์ฉ๋๋ Gmail ์ฃผ์์ ๋๋ค.
- spring.mail.password: ์์ ์์ฑํ ์ฑ ์ ์ฉ ๋น๋ฐ๋ฒํธ์ ๋๋ค.
- spring.mail.properties.mail.smtp.auth: SMTP ์ธ์ฆ์ ํ์ฑํํฉ๋๋ค.
- spring.mail.properties.mail.smtp.starttls.enable: ์์ ํ ์ด๋ฉ์ผ ์ ์ก์ ์ํ TLS ์ํธํ๋ฅผ ํ์ฑํํฉ๋๋ค.
๋ฉ์ผ ์ ์ก ์ค์ ๊ตฌ์ฑ
ํ์ค ์ค์ ์ธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฉ์ผ ์ ์ก ์ค์ ์ ์ง์ ํด์ผ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ค์ ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฉ์ผ ์ ์ก ๋ก์ง๊ณผ ์ผ์นํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
๋ฏผ๊ฐํ ์ ๋ณด ๋ณด์
๋ฏผ๊ฐํ ๋ฐ์ดํฐ ์ ์ฅ์ ๋ฌธ์
application.properties์ ๊ฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ฒ์ ์ค๋ํ ๋ณด์ ์ํ์ ์ด๋ํ ์ ์์ต๋๋ค. ์ฝ๋๋ฒ ์ด์ค๊ฐ ๋ ธ์ถ๋ ๊ฒฝ์ฐ, ์ ์์ ์ธ ์ฌ์ฉ์๊ฐ ์ด๋ฌํ ์๊ฒฉ ์ฆ๋ช ์ ์ ์ฉํ ์ ์์ต๋๋ค.
๋ฏผ๊ฐํ ๋ฐ์ดํฐ ๋ณด์์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
- ๋ณ๋์ ์์ฑ ํ์ผ ์ฌ์ฉ:
- ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํด secret.properties๋ผ๋ ์ ํ์ผ์ ์์ฑํฉ๋๋ค.
1spring.mail.password=your-app-password - ๋น๋ฐ ์์ฑ ๊ฐ์ ธ์ค๊ธฐ:
- application.properties๋ฅผ ์์ ํ์ฌ secret.properties๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
1spring.config.import=optional:classpath:secret.properties - ํ๊ฒฝ ๋ณ์ ํ์ฉ:
- ํ๋์ฝ๋ฉ ๋์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ฃผ์ ํฉ๋๋ค.
1spring.mail.password=${EMAIL_PASSWORD}- ๋ฐฐํฌ ํ๊ฒฝ์์ EMAIL_PASSWORD ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.
- ๋น๋ฐ ํ์ผ Git ๋ฌด์:
- ๋ฒ์ ๊ด๋ฆฌ์์ ์ถ์ ๋์ง ์๋๋ก secret.properties๋ฅผ .gitignore์ ์ถ๊ฐํฉ๋๋ค.
12# .gitignoresecret.properties
๋น๋ฐ ์์ฑ ํ์ผ ๊ตฌํ
๋ค์๊ณผ ๊ฐ์ด secret.properties๋ฅผ ๊ตฌ์กฐํํ ์ ์์ต๋๋ค:
1 |
spring.mail.password=your-app-password |
๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๋ถ๋ฆฌํจ์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์ ํ์ธ๋ฅผ ๊ฐํํ๊ณ , ์ฝ๋๋ฒ ์ด์ค์ ์ผ๋ถ๊ฐ ๋ ธ์ถ๋๋๋ผ๋ ์ค์ํ ๋ฐ์ดํฐ๊ฐ ๋ณดํธ๋๋๋ก ํฉ๋๋ค.
์ด๋ฉ์ผ ๊ธฐ๋ฅ ๊ตฌํ
๊ฐ์
Gmail SMTP๊ฐ ๊ตฌ์ฑ๋๊ณ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ๋ณด์ ์ฒ๋ฆฌ๋ ํ, ๋ค์ ๋จ๊ณ๋ Spring Boot ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ์ค์ ์ด๋ฉ์ผ ์ ์ก ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ฒ์ ๋๋ค.
์ด๋ฉ์ผ ์๋น์ค ์์ฑ
- ์ด๋ฉ์ผ ์๋น์ค ์ธํฐํ์ด์ค ์ ์:
12345package org.studyeasy.SpringBlog.services;public interface EmailService {void sendPasswordResetEmail(String to, String token);} - ์ด๋ฉ์ผ ์๋น์ค ๊ตฌํ:
1234567891011121314151617181920212223242526package org.studyeasy.SpringBlog.services;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.mail.SimpleMailMessage;import org.springframework.mail.javamail.JavaMailSender;import org.springframework.stereotype.Service;@Servicepublic class EmailServiceImpl implements EmailService {@Autowiredprivate JavaMailSender mailSender;@Overridepublic void sendPasswordResetEmail(String to, String token) {String resetLink = "http://localhost:8080/reset-password?token=" + token;SimpleMailMessage message = new SimpleMailMessage();message.setTo(to);message.setSubject("Password Reset Request");message.setText("To reset your password, click the link below:\n" + resetLink);message.setFrom("your-email@gmail.com");mailSender.send(message);}}
์ด๋ฉ์ผ ์๋น์ค ์ค๋ช
- EmailService ์ธํฐํ์ด์ค: ์ด๋ฉ์ผ ์ ์ก์ ์ํ ๊ณ์ฝ์ ์ ์ํ์ฌ ๋ฏธ๋์ ์ฝ๊ฒ ๋์ฒดํ๊ฑฐ๋ ํ์ฅํ ์ ์๋๋ก ํฉ๋๋ค.
- EmailServiceImpl ํด๋์ค: Spring Framework์ ์ด๋ฉ์ผ ์ ์ก ๊ตฌ์ฑ ์์์ธ JavaMailSender๋ฅผ ์ฌ์ฉํ์ฌ EmailService ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค.
- sendPasswordResetEmail ๋ฉ์๋:
- ์ ๊ณต๋ ํ ํฐ์ ์ฌ์ฉํ์ฌ ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ๋งํฌ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- SimpleMailMessage ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์์ ์, ์ ๋ชฉ, ๋ณธ๋ฌธ ๋ฐ ๋ฐ์ ์๋ฅผ ์ค์ ํฉ๋๋ค.
- mailSender.send(message)๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฉ์ผ์ ๋ณด๋ ๋๋ค.
- sendPasswordResetEmail ๋ฉ์๋:
์ปจํธ๋กค๋ฌ์ ์ด๋ฉ์ผ ์๋น์ค ํตํฉ
์๋ฅผ ๋ค์ด, AccountController ๋ด์์ EmailService๋ฅผ ํ์ฉํ์ฌ ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ์ด๋ฉ์ผ์ ๋ณด๋ผ ์ ์์ต๋๋ค:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
package org.studyeasy.SpringBlog.controller; import org.studyeasy.SpringBlog.services.EmailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; @Controller public class AccountController { @Autowired private EmailService emailService; @PostMapping("/forgot-password") public String forgotPassword(String userEmail) { // ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ์ ์ํ ํ ํฐ ์์ฑ (๊ตฌํ ์๋ต) String token = "generated-token"; // ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ์ด๋ฉ์ผ ์ ์ก emailService.sendPasswordResetEmail(userEmail, token); // ํ์ธ ๋ฉ์์ง ํ์ return "password_reset_confirmation"; } } |
๋จ๊ณ๋ณ ์ค๋ช
- ํ ํฐ ์์ฑ: ์ฌ์ฉ์์ ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ์์ฒญ๊ณผ ์ฐ๊ด๋ ๊ณ ์ ํ ํ ํฐ์ ์์ ํ๊ฒ ์์ฑํฉ๋๋ค.
- ์ด๋ฉ์ผ ๋ฐ์ก:
- emailService.sendPasswordResetEmail์ ํธ์ถํ์ฌ ์ฌ์ฉ์์ ์ด๋ฉ์ผ๊ณผ ์์ฑ๋ ํ ํฐ์ ์ ๋ฌํฉ๋๋ค.
- EmailServiceImpl์ด ์ด๋ฉ์ผ ๊ตฌ์ฑ ๋ฐ ์ ์ก์ ์ฒ๋ฆฌํฉ๋๋ค.
- ์ฌ์ฉ์ ํผ๋๋ฐฑ: ์ฌ์ฉ์์๊ฒ ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ์ด๋ฉ์ผ์ด ์ ์ก๋์์์ ์๋ฆฌ๋ ํ์ธ ํ์ด์ง๋ก ๋ฆฌ๋๋ ์ ํฉ๋๋ค.
์์ ๊ฒฐ๊ณผ
์ฌ์ฉ์๊ฐ ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ์ ์์ฒญํ๋ฉด:
- ๋ฑ๋ก๋ ์ด๋ฉ์ผ ์ฃผ์๋ก ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ์ ๋ํ ์์ ํ ๋งํฌ๊ฐ ํฌํจ๋ ์ด๋ฉ์ผ์ด ๋ฐ์ก๋ฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฉ์ผ์ด ์ ์ก๋์์์ ์ฌ์ฉ์์๊ฒ ํ์ธ ๋ฉ์์ง๋ก ํ์ํฉ๋๋ค.
์ ํ์ ์์ฑ ์ฒ๋ฆฌ
์์ฑ ๋๋ฝ ์ ๋ฌธ์
secret.properties๊ฐ ๋ฐฐํฌ ์ค์ ํฌํจ๋์ง ์์ผ๋ฉด(์: .gitignore์ ํฌํจ๋ ๊ฒฝ์ฐ), Spring Boot๊ฐ ์์๋์ง ๋ชปํ๊ณ ๋๋ฝ๋ ๊ตฌ์ฑ์ ๋ํ ์ค๋ฅ๋ฅผ ๋ฐ์์ํฌ ์ ์์ต๋๋ค.
์์ฑ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ ํ์ ์ผ๋ก ๋ง๋ค๊ธฐ
์์ฑ ํ์ผ ๋๋ฝ์ผ๋ก ์ธํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์คํจ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด secret.properties์ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ ํ์ ์ผ๋ก ๋ง๋ค ์ ์์ต๋๋ค.
์ ํ์ ๊ฐ์ ธ์ค๊ธฐ ๊ตฌ์ฑ ๋ฐฉ๋ฒ
- ๊ฐ์ ธ์ค๊ธฐ ๋ฌธ๊ตฌ ์์ :
1spring.config.import=optional:classpath:secret.properties- optional: ์ ๋์ฌ๋ secret.properties๊ฐ ์๋๋ผ๋ Spring Boot๊ฐ ๊ณ์ํด์ ์์๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋์ ์ ๊ทผ๋ฒ:
- secret.properties๊ฐ ์๋ ๊ฒฝ์ฐ, ํ์ํ ๊ตฌ์ฑ์ ์ ๊ณตํ๊ธฐ ์ํด ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์์:
1spring.mail.password=${EMAIL_PASSWORD:defaultPassword}- ์ฌ๊ธฐ์ defaultPassword๋ EMAIL_PASSWORD๊ฐ ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ ๋์ฒด๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ํ์ ๊ฐ์ ธ์ค๊ธฐ ์ฅ์
- ์ ์ฐ์ฑ: ํน์ ์์ฑ ํ์ผ์ ํ์ ํฌํจ ์์ด ๋ค์ํ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ์ ์์ต๋๋ค.
- ๋ณด์: ๋ฒ์ ๊ด๋ฆฌ ํ์ผ ์ธ๋ถ์์ ๋ฏผ๊ฐํ ์์ฑ์ ๊ด๋ฆฌํ ์ ์์ด ๋ณด์์ ๊ฐํํฉ๋๋ค.
์์ ๊ตฌ์ฑ
1 2 3 4 5 6 7 8 |
# application.properties spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=your-email@gmail.com spring.mail.password=${EMAIL_PASSWORD} spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.config.import=optional:classpath:secret.properties |
์ด ๊ตฌ์ฑ์์๋:
- secret.properties๊ฐ ์กด์ฌํ๋ฉด, Spring Boot๊ฐ ๊ทธ ์์ ์ ์๋ ์์ฑ์ ์ฌ์ฉํฉ๋๋ค.
- secret.properties๊ฐ ์์ผ๋ฉด, ์ ํ๋ฆฌ์ผ์ด์ ์ EMAIL_PASSWORD ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ์๋ํฉ๋๋ค.
๊ฒฐ๋ก
Spring Boot ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ์ ์ํ ์ด๋ฉ์ผ ๊ธฐ๋ฅ์ ํตํฉํ๋ ๊ฒ์ SMTP ์ค์ ๊ตฌ์ฑ, ๋ฏผ๊ฐํ ์ ๋ณด ๋ณด์, ์ ๋ขฐํ ์ ์๋ ์ด๋ฉ์ผ ์ ์ก ๋ฉ์ปค๋์ฆ ๊ตฌํ์ ํฌํจํ๋ ๋ค๋ฉด์ ์ธ ๊ณผ์ ์ ๋๋ค. Gmail์ SMTP ์๋น์ค๋ฅผ ํ์ฉํ๊ณ , ์ต๊ณ ๋ณด์ ๊ดํ์ ์ค์ํ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์์ฑ์ ์ ์คํ๊ฒ ๊ตฌ์กฐํํจ์ผ๋ก์จ ํํํ๊ณ ์์ ํ ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ๊ธฐ๋ฅ์ ๋ง๋ค ์ ์์ต๋๋ค.
ํต์ฌ ์์ฝ:
- ์์ ํ ๊ตฌ์ฑ: ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ฃผ์ ๊ตฌ์ฑ ํ์ผ๊ณผ ๋ถ๋ฆฌํ๊ณ ํ๊ฒฝ ๋ณ์๋ ๋ณ๋์ ์์ฑ ํ์ผ์ ์ฌ์ฉํ์ฌ ํญ์ ๋ณดํธํ์ญ์์ค.
- ์ ๋ขฐํ ์ ์๋ ์ด๋ฉ์ผ ์ ์ก: Gmail๊ณผ ๊ฐ์ ์ ๋ขฐํ ์ ์๋ SMTP ์๋น์ค๋ฅผ ํ์ฉํ์ฌ ์ด๋ฉ์ผ์ด ๋ฌธ์ ์์ด ์ฌ์ฉ์์๊ฒ ๋๋ฌํ๋๋ก ๋ณด์ฅํ์ญ์์ค.
- ์ ์ฐํ ์ค์ : ๋ค์ํ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฐ์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ ํ์ ์์ฑ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ๊ตฌํํ์ญ์์ค.
- ์ข ํฉ์ ์ธ ํ ์คํธ: ๋ค์ํ ์๋๋ฆฌ์ค๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ผ๊ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ด๋ฉ์ผ ๊ธฐ๋ฅ์ ์ฒ ์ ํ ํ ์คํธํ์ญ์์ค.
์ด๋ฌํ ๊ดํ์ ์ฑํํจ์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์๊ณผ ์ ๋ขฐ์ฑ์ ํฅ์์ํค๊ณ , ์ฌ์ฉ์ ๊ธฐ๋ฐ๊ณผ์ ์ ๋ขฐ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
์ฐธ๊ณ : ์ด ๊ธฐ์ฌ๋ AI์ ์ํด ์์ฑ๋์์ต๋๋ค.