[Spring] Gmail SMTP로 이메일 보내기 (앱 비밀번호 포함)
스프링(Spring) 기반 웹 애플리케이션에서 Gmail SMTP를 활용해 메일을 전송하는 방법을 알려드립니다. 특히 구글 2단계 인증을 사용하는 분들을 위해 앱 비밀번호 생성부터 메일 발송까지 전체 과정을 예쁘고 깔끔하게 정리했습니다.
✅ Step 1: Google 계정 설정 (2단계 인증 & 앱 비밀번호)
❗ 앱 비밀번호란?
Gmail에서는 2단계 인증이 활성화된 경우, 일반 비밀번호로 SMTP 연결이 불가능합니다. 반드시 "앱 비밀번호"를 생성해 사용해야 합니다.
Gmail에서는 2단계 인증이 활성화된 경우, 일반 비밀번호로 SMTP 연결이 불가능합니다. 반드시 "앱 비밀번호"를 생성해 사용해야 합니다.
- myaccount.google.com 접속
- 왼쪽 메뉴 → 보안 클릭
- 2단계 인증 활성화
- 다시 보안 메뉴로 가서 앱 비밀번호 클릭
- "앱 선택": 메일 / "기기 선택": Windows 컴퓨터 → 생성
- 노란색 16자리 코드를 복사해둡니다 (중요!)
✅ Step 2: pom.xml 의존성 추가
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
✅ Step 3: mail-context.xml 설정
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.gmail.com" />
<property name="port" value="587" />
<property name="username" value="your-email@gmail.com" />
<property name="password" value="앱 비밀번호 16자리" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.transport.protocol">smtp</prop>
<prop key="mail.debug">true</prop>
</props>
</property>
</bean>
💡 주의: username은 Gmail 주소, password는 실제 비밀번호가 아닌 앱 비밀번호입니다!
✅ Step 4: MailService 구현
@Service
public class MailService {
@Autowired
private JavaMailSender mailSender;
@Async
public void sendMail(String to, String subject, String content) {
try {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom("your-email@gmail.com", "관리자");
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true); // HTML 사용
mailSender.send(message);
} catch (Exception e) {
e.printStackTrace();
}
}
}
✅ Step 5: MailController 구현
@Controller
public class MailController {
@Autowired
private MailService mailService;
@RequestMapping("/sendMailTest")
public String sendTestMail() {
mailService.sendMail(
"받는사람@example.com",
"[테스트] Spring 이메일 전송",
"<h3>메일 테스트입니다 :)</h3>"
);
return "home"; // home.jsp 로 이동
}
}
🎯 최종 확인 사항
- 2단계 인증을 꼭 활성화해야 합니다
- 앱 비밀번호는 비밀번호 입력 칸에 사용됩니다
- SMTP 포트는
587(TLS) 또는465(SSL) 중 하나 사용
'SPRING' 카테고리의 다른 글
| Spring.스프링 프레임워크 - 채팅 (1) | 2025.06.07 |
|---|---|
| Spring.스프링 프레임워크 - 페이징 (0) | 2025.06.07 |
| Spring.스프링 프레임워크 - Rest (0) | 2025.06.07 |
| Spring.스프링 프레임워크 - 암호화 (0) | 2025.06.07 |
| Spring.스프링 프레임워크 - 로그 (2) | 2025.06.03 |