๋ฐ์ํ
๐ก SpringMail์ ์ฌ์ฉํ์ฌ ๋ฉ์ผ ์ ์ก ๊ตฌํ
๊ฐ๋ฐํ๊ฒฝ
- SpringBoot 3.1.4
- kotlin / java 17
build.gradle.kts ์ค์
์ฌ์ฉํ springframework mail ์ค์ ์ถ๊ฐ
implementation("org.springframework.boot:spring-boot-starter-mail")
application.yml ์ค์
๋ฉ์ผ ์ ์ก์ ํ์ํ smtp ์ค์
spring:
mail:
host: smtp.gmail.com
port: 587
username: YOUR_GMAIL_EMAIL
password: YOUR_GMAIL_APP_PASSWORD
properties:
mail:
smtp:
auth: true
timeout: 5000
starttls:
enable: true
- `host`, `port`: ๋ฉ์ผ ์ ์ก์ ์ฌ์ฉํ SMTP ์๋ฒ ํธ์คํธ ๋ฐ ํฌํธ
- gmail์ ์ฌ์ฉํ๋ค๋ฉด ์ ์ค์ ๊ทธ๋๋ก ์ฌ์ฉ
- `password`: gmail 2์ฐจ ๋น๋ฐ๋ฒํธ ์ค์ ์ ์๋ ์ฑ ๋น๋ฐ๋ฒํธ ์ ๋ ฅ
- `properties`: ์ฌ์ฉํ๋ smtp ์๋ฒ์ ๋ํ ์ธ๋ถ ์ค์
- gmail์ ๊ฒฝ์ฐ Gmail SMTP settings ๋ฅผ ์ฐธ๊ณ
MailSender ๊ตฌํ
Mail Server Properties
- `MailSender` ์ธํฐํ์ด์ค: ๋ฉ์ผ ์ ์ก์ ๊ธฐ๋ณธ์ ์ธ ๋ก์ง์ ๊ฐ์ง๊ณ ์๋ ์ต์์ ์ธํฐํ์ด์ค
- `JavaMailSender` ์ธํฐํ์ด์ค: MailSender ์ ํ์ ์ธํฐํ์ด์ค. MIME ๋ฉ์ธ์ง๋ฅผ ์ง์ํ๋ฉฐ, `MimeMessageHelper` ํด๋์ค์ ํจ๊ป `MimeMessage`๋ฅผ ์์ฑ.
- `JavaMailSenderImpl` ํด๋์ค: `JavaMailSender` ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด. `MimeMessage`์ `SimpleMailMessage`๋ฅผ ์ง์
- `SimpleMailMessage` ํด๋์ค: from, to, cc, subject, text๋ฅผ ํฌํจํ simple mail message๋ฅผ ๋ง๋๋๋ฐ ์ฌ์ฉ
- `MimeMessagePreparator` ์ธํฐํ์ด์ค: MIME ๋ฉ์ธ์ง๋ฅผ ์ค๋นํ๋ ์ฝ๋ฐฑ ์ธํฐํ์ด์ค ์ ๊ณต
- `MimeMessageHelper` ํด๋์ค: MIME ๋ฉ์ธ์ง ์์ฑ์ ๋์์ฃผ๋ ํด๋์ค. ์ด๋ฏธ์ง, ์ผ๋ฐ์ ์ธ ๋ฉ์ผ ์ฒจ๋ถ ํ์ผ ๋ฐ HTML ๋ ์ด์์์ ํ ์คํธ ์ฝํ ์ธ ๋ฅผ ์ง์
MailSender
@Component
class MailSender(
private val mailSender: JavaMailSender // Autowired
) {
fun sendSimpleMail(to: String, subject: String, content: String) {
val message = SimpleMailMessage().apply {
from = "YOUR_GMAIL_MAIL@gmail.com"
setTo(to)
setSubject(subject)
text = content
}
mailSender.send(message)
}
fun sendMailWithAttachment(to: String, subject: String, content: String, pathToAttachment: String) {
val message = mailSender.createMimeMessage()
MimeMessageHelper(message).apply {
setFrom("YOUR_GMAIL_MAIL@gmail.com")
setTo(to)
setSubject(subject)
setText(content)
addAttachment("file", FileSystemResource(File(pathToAttachment)))
}
mailSender.send(message)
}
}
- `SimpleMailMessage()` : ์ด๋ฏธ์ง ๋ฐ ์ฒจ๋ถํ์ผ, HTML Layout์ด ํ์ํ์ง ์์ผ๋ฏ๋ก, ๊ฐ๋จํ ๊ตฌํํ ์ ์๋ SimpleMailMessage ์ฌ์ฉ
- `MimeMessageHelper(message)`: `createMimeMessage()`๋ฅผ ์ด์ฉํ์ฌ MimeMessage๋ฅผ ์์ฑํ๊ณ , Helper๋ฅผ ํตํด ์ค์ ๋ด๋ถ ์ปจํ ์ธ ๋ฅผ ์ฃผ์
- `from`: ํ์์ ์ด์ง ์์ง๋ง, from์ด ์กด์ฌํ์ง ์๋๊ฒฝ์ฐ ๋๋ถ๋ถ์ SMTP ์๋ฒ๋ค์ด Message๋ฅผ Rejectํ ์ ์์
๋ฐ์ํ