티스토리 뷰
반응형
안녕하세요!
오늘은 Spring boot에서 원하는 email로 data를 보내는 방법에 대해서 포스팅을 해보겠습니다.
email로 data를 보내기 위해서는 spring boot에서 코드만 짜는 것이 아닌 발신 이메일에 대한 설정을 해야 하는데요,
이 두 가지 모두 적어보겠습니다!
그리고 포스팅하기에 앞서 제가 올릴 코드들의 간단한 로직을 설명드리자면, front에서 requestBody안에 서비스 유형, 이름, 회사명, 전화번호, 이메일 주소, 문의 내용을 보내면 back에서 InquiryAddDTO로 내용을 받아온 뒤, 데이터를 가공해서 이 내용들을 보내고자 하는 이메일 주소로 보내줍니다.
✏️ 이메일 설정하기
- 먼저 자신의 구글 계정에 들어간 뒤 구글 계정 관리를 클릭합니다.
- 보안 버튼을 클릭한 뒤 앱 비밀번호 생성을 클릭합니다.
- 여기서 만들어진 비밀번호를 복사해서 메모장 같은 곳에 저장합니다.
- 주의할 점으로는 앱 비밀번호를 만들기 위해서는 구글 계정이 2차 인증이 설정이 되어 있어야 합니다.
이렇게 나온 비밀번호를 저장하면 계정 설정은 완료입니다!
✏️ build.gradle 설정 추가
// email
implementation 'org.springframework.boot:spring-boot-starter-mail'
✏️ application.yml 설정 추가
spring :
mail:
host:
smtp.gmail.com
port:
587
username: 구글 계정 이름(@gmail.com은 안쓰셔도 됩니다.)
password: 위에서 만든 앱 비밀번호
properties:
mail:
smtp:
auth: true
starttls:
enable: true
✏️ InquiryController 생성
public class InquiryController {
private final InquiryService inquiryService;
@PostMapping("/add")
public ResponseEntity<ResponseDTO<Object>> addInquiry(@Valid @RequestBody InquiryAddDTO inquiryAddDTO) {
inquiryService.sendInquiryByMail(inquiryAddDTO.getService(),inquiryAddDTO.getName(),inquiryAddDTO.getCompany(),inquiryAddDTO.getTel(),inquiryAddDTO.getEmail(),inquiryAddDTO.getQuestion());
return new ResponseEntity<>(ResponseDTO.builder().error(false).message("문의사항 등록을 완료하였습니다.").data(null).build(), HttpStatus.OK);
}
}
✏️ InquiryService 생성
public interface InquiryService {
void sendInquiryByMail(String service, String name, String company, String tel, String email, String question);
}
✏️ InquiryServiceImpl 생성(이 코드가 이메일을 보내는 핵심 로직)
public class InquiryServiceImpl implements InquiryService {
private final JavaMailSender javaMailSender;
private static final String emailAddress = "";
@Override
public void sendInquiryByMail(String service, String name, String company, String tel, String email, String question) {
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setTo(emailAddress);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
mailMessage.setSubject("문의 내용 " + dateFormat.format(new Date()));
String emailResponse = "";
emailResponse +="서비스 희망 항목 :"+service+"\n성명 : "+name +"\n회사 : "+company+"\n연락처 : "+tel + "\n이메일 : "+email + "\n문의 내용 : "+question;
mailMessage.setText(emailResponse);
javaMailSender.send(mailMessage);
}
}
✏️ InquiryAddDTO 생성
public class InquiryAddDTO {
@NotNull
@Length(max = 1000, message = "입력할 수 있는 최대 길이는 1000입니다")
private String service;
@NotNull
@Length(max = 1000, message = "입력할 수 있는 최대 길이는 1000입니다")
private String name;
@NotNull
@Length(max = 1000, message = "입력할 수 있는 최대 길이는 1000입니다")
private String company;
@NotNull
@Length(max = 1000, message = "입력할 수 있는 최대 길이는 1000입니다")
private String tel;
@NotNull
@Length(max = 1000, message = "입력할 수 있는 최대 길이는 1000입니다")
private String email;
@NotNull
@Length(max = 1000, message = "입력할 수 있는 최대 길이는 1000입니다")
private String question;
}
반응형
'Web > Spring' 카테고리의 다른 글
[Spring/스프링] Spring boot QueryDSL 사용하기 (0) | 2024.09.30 |
---|---|
[Spring/스프링] - 스프링 부트 페이지내이션 /Pageable (0) | 2024.09.13 |
[Spring/스프링] 스프링 부트 파일 업로드 및 화면 출력 (0) | 2024.09.05 |
[Spring/스프링] Port 8080 is already in use 에러 해결 방법 (4) | 2024.09.03 |
[Spring] 스프링부트 + JPA + thymeleaf + Spring Security로 회원가입 + 게시판(수정, 삭제, 등록, 조회, 댓 (0) | 2024.09.03 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스프링 부트 crud 게시판 구현
- 자료구조
- DFS
- 유니온 파인드
- C++ Stack
- 백준 풀이
- 투 포인터
- 카운팅 정렬
- 반복문
- 세그먼트 트리
- html
- BFS
- 알고리즘
- c++ string
- DP
- java
- 유클리드 호제법
- 자바스크립트
- 에라토스테네스의 체
- 우선순위 큐
- 자바
- HTML5
- js
- 이분 매칭
- 알고리즘 공부
- 백준
- CSS
- Do it!
- C++
- 스택
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함