배경 : 가이드라고 내부 팀에서 준 문서 보면 메일 발송방식이 only 자바가 아닌 javamailsender를 이용해서 구현되어있었다. 이걸로 테스트 발송해보려고했는데, 오토와이어링을 할 수 없습니다 'JavaMailSender'의 타입의 bean을 찾을 수 없다고 오류가 났다.. chatGPT4o(무료) 버전이 너무 친절하게 남겨줘서 공유한다.
내용 :
JavaMailSender를 사용하기 위해서는 Spring 프로젝트에 필요한 의존성을 추가하고, JavaMailSender를 빈으로 설정해야 합니다. 다음은 문제를 해결하기 위한 단계별 가이드입니다.
1. Maven 또는 Gradle 의존성 추가
프로젝트의 pom.xml (Maven을 사용하는 경우) 또는 build.gradle (Gradle을 사용하는 경우) 파일에 다음 의존성을 추가해야 합니다.
Maven:
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
Gradle:
2. 메일 설정 추가
application.properties 또는 application.yml 파일에 메일 설정을 추가합니다. 예를 들어, Gmail을 사용하는 경우 다음과 같이 설정할 수 있습니다.
application.properties:
spring.mail.port=587
spring.mail.username=your-email@gmail.com
spring.mail.password=your-email-password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
application.yml:
mail:
host: smtp.gmail.com
port: 587
username: your-email@gmail.com
password: your-email-password
properties:
mail:
smtp:
auth: true
starttls:
enable: true
3. JavaMailSender 빈 사용
이제 JavaMailSender를 주입받아 사용할 수 있습니다. 다음과 같이 주입받아 사용합니다:
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
@Service
public class EmailService {
private final JavaMailSender mailSender;
public EmailService(JavaMailSender mailSender) {
this.mailSender = mailSender;
}
public void sendEmail(String to, String subject, String text) {
MimeMessage message = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(text, true);
mailSender.send(message);
} catch (Exception e) {
e.printStackTrace();
}
}
}
4. Spring Boot Application 클래스에서 확인
마지막으로, Spring Boot 애플리케이션 클래스를 확인하여 메인 클래스가 제대로 설정되어 있는지 확인합니다.
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class EmailApplication {
public static void main(String[] args) {
SpringApplication.run(EmailApplication.class, args);
}
}
이렇게 하면 JavaMailSender를 빈으로 주입받아 사용할 수 있게 됩니다. JavaMailSender 타입의 빈을 찾을 수 없다는 오류가 발생하지 않을 것입니다.
'개발 > 02.Spring' 카테고리의 다른 글
[모듈 합치기] 멀티모듈 내 batch 모듈을 admin으로 합치기 (1) | 2024.05.21 |
---|---|
[SpringBoot, 퍼옴] SpringBoot, AWS RDS(MySQL) 연동 (0) | 2024.04.12 |
[Springboot] No converter found for return value of type 오류 (0) | 2023.10.19 |