티스토리 뷰
0. 순서
0-1. spring-boot-starter-mail을 pom.xml에 추가
0-2. 스프링이 제공하는 MailSender를 사용하는 서비스 작성하기 (예를 들면 EmailUtil)
0-3. application.properties에 사용할 메일 서버 정보 설정
0-4. 필요시 EmailUtil을 주입받아 사용
1. 이 포스트는 Email 전송을 위한 기능을 가지는 컴포넌트를 작성하여 사용하는 방법을 설명한다.
2. email을 전송을 지원하는 스프링 모듈을 import한다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
3. 스프링의 mail starter는 MailSender interface와 MailSenderImpl을 제공한다.
3-1. 실제로 사용하는 인터페이스와 클래스는 편의기능을 더 추가한 JavaMailSender, JavaMailSenderImpl이 된다.
3-2. 어차피 @Autowired로 주입하기 때문에 구현 클래스에 대해서 알 필요가 없다.
4. MailSender와 MailSenderImpl이 DAL의 Data Access Object라고 비유할 수 있다.
4-1. 이것을 이용하는 Service Layer도 만들어야 한다.
4-2. 실제로 메일을 보낼 때 사용할 Service인 EmailUtil 인터페이스와 구현제를 정의한다.
public interface EmailUtil {
void sendEmail(String toAddress, String subject, String body);
}
@Component
public class EmailUtilImpl implements EmailUtil {
@Autowired
private JavaMailSender sender;
@Override
public void sendEmail(String toAddress, String subject, String body) {
MimeMessage message = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);
try {
helper.setTo(toAddress);
helper.setSubject(subject);
helper.setText(body);
} catch (MessagingException e) {
e.printStackTrace();
}
sender.send(message);
}
}
5. Email을 보내기 위한 서버 정보를 application.properties에 등록한다.
5-1. 아래는 구글 메일을 사용한 설정이다.
5-2. 구글메일 사용하려면 외부에서 접근을 허용하도록 변경해야 한다.
5-3. https://myaccount.google.com/lesssecureapps여기에 가서 allow less secure apps: ON을 활성화 해야 한다.
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=username
spring.mail.password=password
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.auth=true
6. 이렇게 서비스로 작성하면 다른 서비스와 마찬가지로 필요할 때 언제든지 주입하여 사용할 수 있다.
@Controller
public class LocationController {
@Autowired
private EmailUtil emailUtil;
...
@PostMapping("/saveLocation")
public String saveLocation(@ModelAttribute Location location, Model model) {
this.locationService.saveLocation(location);
String msg = "Location saved with id:: " + location.getId();
model.addAttribute("message", msg);
emailUtil.sendEmail("heops79@naver.com", "스프링을 이용한 메일 전송", "되는지 테스트 하는 거예요");
return "createLocation";
}
'Spring > Spring Boot' 카테고리의 다른 글
Spring Boot : Data JPA - DTO 사용 할 때 (0) | 2020.04.29 |
---|---|
Spring Boot : Data JPA - @Query 사용하기 (0) | 2020.04.29 |
Spring Boot : Web Application Context Root 위치 설정 (0) | 2020.04.25 |
Spring Boot : JSP 및 JSTL사용 설정 (0) | 2020.04.25 |
Spring Boot : MySql 연결하기 (0) | 2020.04.25 |
- Total
- Today
- Yesterday
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
- 스프링부트
- 매핑
- Rest
- Validation
- MYSQL
- WebMvc
- 설정하기
- Spring Security
- Security
- jsp
- RestTemplate
- 자바
- XML
- crud
- Spring
- one-to-one
- 로그인
- 외부파일
- Many-To-Many
- 스프링
- one-to-many
- login
- hibernate
- 설정
- 하이버네이트
- mapping
- form
- 상속
- spring boot
- Angular