Simple Mail Transfer Protocol의 약자로, 이메일 전송에 사용되는 네트워크 프로토콜이다.
나는 테스트용 구글 계정을 새로 만들었다! (과정은 생략)
계정 생성 후 Google계정관리로 이동
https://myaccount.google.com/
하단의 2단계 인증이 사용안함 → 사용으로 변경해 줘야한다.
인증사용절차는 인증코드만 하면 간단하니 넘어가도록 하겠다!
아래의 앱 비밀번호를 클릭후 아래와 같이 기타를 선택한다.
이름은 SMTP 로 해주고 (원하는데로 지으면됨) 생성 후 자동 발급된 기기용 앱 비밀번호를 기억한다!
프로젝트로 돌아와서 의존성을 추가해준다. (gradle사용)
implementation 'org.springframework.boot:spring-boot-starter-mail'
#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
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;
}