정구리의 우주정복
[Kotlin] 구글 SMTP 연결 및 메일 전송 (2025.02.20 기준) 본문
반응형
거지같은 메일 전송
(1) 구글 설정
Gmail 로 이동 모든 설정보기 클릭 !!!
이거 설정 켜기
(2) 구글 2단계 인증 켜기
보안 > 2단계 인증 들어가서 켜기 !!!
다시 와서 구글 앱 비밀번호 검색 후 만들기
만들어진 앱 비번 복사 고고고 !!!!!!!!
(3) Kotlin 으로 돌아와서
spring:
mail:
host: smtp.gmail.com
port: 587
username: 구글 이멤일
password: 앱비밀번호
properties:
mail:
smtp:
auth: true
timeout: 5000
starttls:
enable: true
application.yml 에 이렇게 작성해준다
(4) gradle 설정
implementation("org.springframework.boot:spring-boot-starter-mail")
이거 추가 고고
(5) 코드작성
package com.example.toygry.routinmoa.user.adapter.out.persistence
import com.example.toygry.routinmoa.user.adapter.out.persistence.entity.EmailVerificationEntity
import com.example.toygry.routinmoa.user.adapter.out.persistence.repository.EmailVerificationRepository
import com.example.toygry.routinmoa.user.adapter.out.persistence.repository.UserRepository
import com.example.toygry.routinmoa.user.application.port.out.SignPort
import com.example.toygry.routinmoa.user.domain.vo.SignResult
import jakarta.mail.internet.MimeMessage
import jakarta.transaction.Transactional
import org.springframework.mail.javamail.JavaMailSender
import org.springframework.mail.javamail.MimeMessageHelper
import org.springframework.stereotype.Component
@Component
class SignAdapter(
val emailVerificationRepository: EmailVerificationRepository,
private val mailSender: JavaMailSender
): SignPort {
@Transactional
override fun sendEmail(email: String, type: String): SignResult {
// 코드 생성
val newCode = generateCode()
// 기존거 지우고
emailVerificationRepository.deleteByEmail(email)
val verifyInfo = EmailVerificationEntity(email = email, code = newCode)
emailVerificationRepository.save(verifyInfo)
sendVerificationEmail(email,newCode,type)
return SignResult(true, "이메일 전송 완료")
}
private fun generateCode(): String {
return (100000..999999).random().toString() // 6자리 숫자 랜덤 생성
}
// 여기부터 작성 !!!
fun sendVerificationEmail(email: String, code: String, type: String) {
val message: MimeMessage = mailSender.createMimeMessage()
val helper = MimeMessageHelper(message, true)
helper.setTo(email)
helper.setSubject("Your Verification Code")
helper.setText(
"""
<html>
<body>
<h3>Your verification code</h3>
<p>Your verification code is: <b>$code</b></p>
<p>Please enter this code to verify your email.</p>
</body>
</html>
""".trimIndent(),
true
)
mailSender.send(message)
}
}
sendVerificationEmail 참고해서 만들고 실행하면
와 ~ 메일 간다 ~~
반응형
'JAVA > STUDY' 카테고리의 다른 글
[Java] WebFlux 정리 (Spring MVC 와 차이, Java 비동기 기술들, Mono/Flux 차이) (1) | 2025.04.16 |
---|---|
[Kotlin] 공통 Response 정의하기 (0) | 2025.03.11 |
[Kotlin] findById().orElseThrow와 findById()의 차이 (Optional) (0) | 2025.02.18 |
[Kotlin] Dirty Checking (더티 체킹) (0) | 2025.02.02 |
[Spring] 커스텀 에러 정의, 공통화 , HttpStatus 보여주기 (BaseException 정의하기) (2) | 2024.06.22 |
Comments