<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.3.4.RELEASE</version>
</dependency>
: 간단한 메일 전송 위한 기본 기능 제공하는 최상위 인터페이스
: MailSender의 서브 인터페이스. MIME 메세지들과 Mime 메세지의 생성을 위한 헬퍼 클래스와 함께 사용. MimeMessagePreparator 매커니즘과 함께 사용하는 것을 추천함.
: JavaMailSender의 인터페이스 구현체. MimeMessage와 SimpleMailMessage를 지원함.
: 수신자, 발송인, 추친, 제목 및 내용 등을 포함한 간단한 메일 메시지를 생성하는데 사용함.
: MIME 메세지의 준비에 있어 콜백 인터페이스를 제공함.
: MIME 메세지를 만드는 헬퍼 클래스. 이미지 지원을 제공하고, 형식적인 메일 첨부물과 HTML 레이아웃의 텍스트 컨텐츠를 제공합니다.
3.1 Spring Mail Server Properties
빈 등록 옵션
@Bean
public JavaMailSender getJavaMailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.gmail.com");
mailSender.setPort(587);
mailSender.setUsername("my.gmail@gmail.com");
mailSender.setPassword("password");
Properties props = mailSender.getJavaMailProperties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.debug", "true");
return mailSender;
}
3.2 Spring Boot Mail Server Properties
보내는 사람의 서버 주소 설정, 아이디 비번 설정
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=<login user to smtp server>
spring.mail.password=<login password to smtp server>
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
4.1 기본 메일 보내기
메일을 보냅니다.
@Component
public class EmailServiceImpl implements EmailService {
@Autowired
private JavaMailSender emailSender;
public void sendSimpleMessage(
String to, String subject, String text) {
...
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom("noreply@baeldung.com");
message.setTo(to);
message.setSubject(subject);
message.setText(text);
emailSender.send(message);
...
}
}
누가, 누구에게, 제목을, 내용을 메세지에 담아서 이메일 샌더로 보내는 단순한 구조입니다.
4.2 첨부자료가 추가된 메일 보내기
심플 메일이 아니라 첨부파일 메일을 보내고 싶다면 자바메일 라이브러리의 MIME multipart 메세지를 심플메일메세지 대신 써야합니다.
스프링은 org.springframework.mail.javamail.MimeMessageHelper class 로 자바 메일 라이브러리를 제공합니다.
다음은 예제 소스 입니다.
@Override
public void sendMessageWithAttachment(
String to, String subject, String text, String pathToAttachment) {
// ...
MimeMessage message = emailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom("noreply@baeldung.com");
helper.setTo(to);
helper.setSubject(subject);
helper.setText(text);
FileSystemResource file
= new FileSystemResource(new File(pathToAttachment));
helper.addAttachment("Invoice", file);
emailSender.send(message);
// ...
}
4.3 간단한 이메일 템플릿
SimpleMailMessage 클래스는 텍스트 포맷팅을 지원합니다. 우리는 이메일을 위한 템플릿을 빈 설정을 통해 만들 수 있습니다.
@Bean
public SimpleMailMessage templateSimpleMessage() {
SimpleMailMessage message = new SimpleMailMessage();
message.setText(
"This is the test email template for your email:\n%s\n");
return message;
}
이제 이 템플릿으로 언제든 메일을 쉽게 보낼 수 있습니다.
@Autowired
public SimpleMailMessage template;
...
String text = String.format(template.getText(), templateArgs);
sendSimpleMessage(to, subject, text);
헐 이거 꿀팁이네요. 기억해둬야지. 감사해요!!