일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
26 | 27 | 28 | 29 | 30 | 31 |
- ispresent
- 티스토리챌린지
- kotlin
- 객체지향
- map
- JPQL
- javamailsender
- 이메일 본인인증
- 널 허용
- mutablemap
- java
- JPA
- jpa repository
- 코틀린
- Spring
- devpi
- string.repeat()
- entity
- @embededid
- 오블완
- string?
- embededid
- 스프링
- 복합 키
- email api 구현
- 스프링 부트
- Token
- Spring Boot
- 자바
- 토큰
- Today
- Total
DeveloPiano
[Java] Spring Boot 활용 Email 발송하기 본문
이 포스트에서는 스프링 부트를 사용하여 간단한 이메일 전송 API를 구현하는 방법을 설명합니다. 이메일 전송 기능은 여러 웹 애플리케이션에서 유용하게 사용되며, 스프링 부트와 JavaMailSender를 활용하면 간단히 구현할 수 있습니다.
Gradle 설정
이메일 전송 기능을 구현하기 위해 필요한 의존성을 build.gradle 파일에 추가합니다.
plugins {
id 'org.springframework.boot' version '3.1.0'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-mail'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
위의 설정을 저장한 후, Gradle을 리프레시하여 필요한 라이브러리를 다운로드합니다.
application.yml 설정
이메일 전송을 위해 SMTP 서버 설정을 src/main/resources/application.yml 파일에 추가합니다. 여기서는 Gmail의 SMTP 서버를 사용합니다.
spring:
mail:
host: smtp.gmail.com
port: 587
username: your-email@gmail.com
password: your-email-password
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
여기서 username과 password는 실제 이메일 계정 정보로 변경해야 합니다. Gmail의 경우, 보안을 위해 앱 비밀번호를 생성하여 사용하는 것을 권장합니다.
MailConfig 클래스 설정
설정 파일의 민감한 정보를 관리하고 이메일 전송 기능을 설정하기 위한 Configuration 클래스를 생성합니다. MailConfig.java라는 클래스를 config 패키지에 추가합니다.
package com.example.emailservice.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import java.util.Properties;
@Configuration
public class MailConfig {
@Bean
public JavaMailSender javaMailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.gmail.com");
mailSender.setPort(587);
mailSender.setUsername("your-email@gmail.com");
mailSender.setPassword("your-email-password");
Properties props = mailSender.getJavaMailProperties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.starttls.required", "true");
props.put("mail.debug", "true"); // 디버그 로그 활성화 (필요에 따라 제거)
return mailSender;
}
}
이 Config 클래스는 JavaMailSender를 Bean으로 등록하여 애플리케이션 전반에서 이메일 전송 기능을 사용할 수 있도록 설정합니다.
이메일 서비스 클래스 작성
이제 실제로 이메일을 전송하는 로직을 구현합니다. EmailService라는 클래스를 생성하고 메일을 전송하는 메서드를 추가합니다.
package com.example.emailservice.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
@Service
public class EmailService {
@Autowired
private JavaMailSender mailSender;
public void sendSimpleEmail(String to, String subject, String text) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(to);
message.setSubject(subject);
message.setText(text);
message.setFrom("your-email@gmail.com"); // 보내는 사람의 이메일
mailSender.send(message);
}
}
이메일 전송 API 컨트롤러 작성
이제 API 엔드포인트를 구현하여 이메일을 전송할 수 있게 만듭니다. EmailController 클래스를 작성합니다.
package com.example.emailservice.controller;
import com.example.emailservice.service.EmailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api")
public class EmailController {
@Autowired
private EmailService emailService;
@PostMapping("/send-email")
public String sendEmail(@RequestParam String to,
@RequestParam String subject,
@RequestParam String text) {
emailService.sendSimpleEmail(to, subject, text);
return "Email sent successfully!";
}
}
실행 및 테스트
이제 모든 설정이 완료되었으므로 애플리케이션을 실행하고 이메일 전송 API를 테스트할 수 있습니다.
- POST 요청 URL: http://localhost:8080/api/email/send
- 파라미터:
- to: 수신자 이메일 주소
- subject: 이메일 제목
- text: 이메일 내용
Postman이나 브라우저에서 위 URL로 요청을 보내면 이메일이 정상적으로 전송되는 것을 확인할 수 있습니다.
이렇게 해서 스프링 부트를 활용하여 간단한 이메일 전송 API를 구현해 보았습니다. 추가적으로 보안 설정을 강화하거나 예외 처리를 추가하여 API의 완성도를 높일 수 있습니다.
'Develop > Java' 카테고리의 다른 글
[Java] Stream 으로 간결하고 효율적인 데이터 처리하기 (0) | 2024.09.05 |
---|---|
[Java] 이메일 인증 기반 회원가입 API 구현하기 (0) | 2024.09.03 |
[Java] StringUtils 사용의 장점 (0) | 2024.08.20 |
[Java] JPA 엔티티 관계 매핑 : @OneToOne, @ManyToOne, @ManyToMany (0) | 2024.08.15 |
[Java] Class와 Record : 정의, 특징, 그리고 차이점 이해하기 (1) | 2024.08.09 |