[Java/Spring] SMTP(Email 보내기)

Hyeri Park·2022년 11월 24일
0

JAVA/Spring 기초

목록 보기
20/22
post-thumbnail

1. SMTP란?

Simple Mail Transfer Protocol의 약자로, 이메일 전송에 사용되는 네트워크 프로토콜이다.

2. Google Gmail SMTP 활용

(1). 계정 생성

나는 테스트용 구글 계정을 새로 만들었다! (과정은 생략)

계정 생성 후 Google계정관리로 이동
https://myaccount.google.com/

(2). 보안 2단계 인증 사용

하단의 2단계 인증이 사용안함 → 사용으로 변경해 줘야한다.
인증사용절차는 인증코드만 하면 간단하니 넘어가도록 하겠다!

(3). 앱 비밀번호 생성

아래의 앱 비밀번호를 클릭후 아래와 같이 기타를 선택한다.
이름은 SMTP 로 해주고 (원하는데로 지으면됨) 생성 후 자동 발급된 기기용 앱 비밀번호를 기억한다!

3. Spring Setting

(1). dependencis 추가

프로젝트로 돌아와서 의존성을 추가해준다. (gradle사용)

implementation 'org.springframework.boot:spring-boot-starter-mail'

(2). application.properties 추가

#mail
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=(user email)
spring.mail.password=(위에서 셋팅했던 앱 비밀번호)
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

(3). 프로젝트 셋팅!

Controller에서 DTO 객체로 담아 서비스로 보낸다는 가정하에 설명한다.

MailController.java

	@PostMapping("/contact/send")
	@ResponseBody
	public String mail(@RequestBody MailDto data) {

		String	res = this.mailService.sendSimpleMessage(data);
		return	res;
	}

MailService.java

package com.example.ilapofol.business;

import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;

import com.example.ilapofol.model.MailDto;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Service
@RequiredArgsConstructor
@Slf4j
public class MailService {

	private final JavaMailSender emailSender;

	public String sendSimpleMessage(MailDto data) {

		System.out.println(data);

		SimpleMailMessage message = new SimpleMailMessage();
		message.setFrom(data.getEmail());
		message.setTo("보낼 메일 즉 나의 메일!");
		message.setSubject(data.getName());
		message.setText(data.getMessage() + data.getEmail());
		emailSender.send(message);

		log.info("성공 메세지 {} : ", message);
		return "전송 성공!";
	}
}

MailDto.java

package com.example.ilapofol.model;

import lombok.Data;

@Data
public class MailDto {

	private int id;
	private String name;
	private String email;
	private String message;
}

4. 구현

profile
Backend Developer

0개의 댓글